目前正在学习Ruby /编程的过程中,我遇到了这个问题:
你的任务是建造一个建筑物,它将是一堆n个立方体.底部的立方体将具有一定体积
n^3,上面的立方体将具有体积(n-1)^3等等,直到顶部具有体积为1^3.您将获得m建筑物的总体积.报错m,你可以找到多少n,你将不得不建立多维数据集?函数的参数findNb(find_nb, find-nb)将是一个整数m,您必须返回整数n,n^3 + (n-1)^3 + ... + 1^3 = m如果n存在这样的整数,或者-1如果没有这样的整数n*.
这是我试图解决这个问题:
def find_nb(m)
(1..Float::INFINITY).each do |n|
if (1..n).inject(0) {|sum, value| sum + value**3} == m
return p n
else
next
end
end
end
Run Code Online (Sandbox Code Playgroud)
这似乎适用于我知道可以工作的输入,例如:
find_nb(4183059834009)
find_nb(135440716410000)
find_nb(40539911473216)
Run Code Online (Sandbox Code Playgroud)
我需要帮助的领域:
我不知道如果没有任何值n可以满足等式,因此我会如何理解它,因此输出-1如输入
find_nb(24723578342962)
Run Code Online (Sandbox Code Playgroud)任何有关如何使现有代码更好的提示将不胜感激.
我过去几周一直在学习红宝石,我遇到过类似的东西:
array = [10, 20, 20];
array.reduce(:^)
# => 10
Run Code Online (Sandbox Code Playgroud)
评估为10.
代码的目的是在序列中找到一个奇数出现的元素,例如[10, 20, 20].
有没有人对这是如何工作有一个相对简单的解释?