我需要一个方法coins
,它接受一个整数并将其映射到整数除以2到4之间的数字。我需要继续这样做,直到所有数字都达到零,然后计数数组中的元素。示例如下:
coins(5) # => 11
这推导如下:
# 5
# => [2, 1, 1]
# => [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
# => [[[0, 0, 0], 0, 0], [0, 0, 0], [0, 0, 0]]
如果向下舍入的数字不等于0,则下面是数组的每个索引需要发生的事情。
def coins(n)
arr = (n/2), (n/3), (n/4)
i = 0
while i < arr.length
if arr[i] != 0
arr[i] = (n/2), (n/3), (n/4)
end
i += 1
end
end
答案 0 :(得分:3)
def coins n
a = [n]
a.replace(a.flat_map{|e| e.zero? ? e : [e/2, e/3, e/4]}) until a.all?(&:zero?)
a.length
end
coins(5) # => 11