我已经在这个 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 class或 modern(>= 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/