ruby - 求 a 和 b 之间所有数字的和 : Ruby

标签 ruby algorithm

我已经在这个 Kata 上工作了一段时间了,但仍然不知道我错过了什么。问题给定两个整数 a 和 b,可以是正数或负数,求出它们之间所有数字的总和并返回。如果两个数字相等,则返回 a 或 b。

到目前为止,这就是我的解决方案:

def get_sum(a,b)
  sum = [a+=b].sum      
  if sum == a or b 
    return a
  end 
end

这是输出结果:

Test Passed: Value == 1
Test Passed: Value == 3
Expected: 14, instead got: 4
Expected: 127759, instead got: 509
Expected: 44178, instead got: 444

我相信关键字是之间的所有数字,但我不确定如何从语法上编写它。 我在下面提供了一些示例以供进一步说明。

get_sum(1, 0) == 1   # 1 + 0 = 1
get_sum(1, 2) == 3   # 1 + 2 = 3
get_sum(0, 1) == 1   # 0 + 1 = 1
get_sum(1, 1) == 1   # 1 Since both are same
get_sum(-1, 0) == -1 # -1 + 0 = -1
get_sum(-1, 2) == 2  # -1 + 0 + 1 + 2 = 2

https://www.codewars.com/kata/55f2b110f61eb01779000053/train/ruby

最佳答案

您可以使用公式Arithmetic progression :

def get_sum(a, b)
  a, b = b, a if a > b

  (b - a + 1) * (a + b) / 2
end

Active Support(Rails) extension for Range classmodern(>= 2.4) Ruby做同样的事情。

因此,如果您的 Kata 站点使用 Rails 或现代 Ruby,您可以使用 @MBo 答案。通常此类网站会指定环境和解释器版本。

def get_sum(a, b)
  a, b = b, a if a > b

  (a..b).sum
end

关于ruby - 求 a 和 b 之间所有数字的和 : Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934216/

相关文章:

python 多个列表中的最小范围

ruby - 如何从字符串末尾拆分标记?

ruby - Ruby 中的多重继承

ruby-on-rails - CarrierWave:为所有版本化文件创建相同、唯一的文件名

python - 如何生成列表的所有排列?

python - 任何 python 包来加速循环计算?

algorithm - 高效循环崩溃

ruby - 使用 Ruby 将 SEC Edgar XML 文件解析为 Nokogiri

ruby-on-rails - headless gem : webkit_server: cannot connect to X server

检查多个范围内数字总和的算法