N
値を取り、 3 つの整数N/2
、N/3
、およびN/4
切り捨てを返すメソッドを作成しようとしています。ゼロになるまでそれらを取り戻し続けます。
def crazy_coins(n)
coins = Array.new
coins.push(n.to_a)
generate = Proc.new { |x|
temp = []
count = 2
while count < 5
x = n/count
temp << x
count += 1
end
return temp
}
coins.map!(&generate)
end
出力:
crazy_coins(5)
# => [[2, 1, 1]]
成功した出力は次のようになります。
crazy_coins(5)
11
=> [2, 1, 1]
=> [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
=> [[[0, 0, 0], 0, 0], [0, 0, 0], [0, 0, 0]]
coins.map!
all まで各要素を (おそらく再帰的に) 再度呼び出す最良の方法は何でしょうcoins[i][j] == 0
か?
coins[0].map!(&generate) を呼び出してみましたが、結果は [[2, 1, 1], [2, 1, 1], [2, 1, 1]] です なぜ既存の値を置き換えないのですか新しい配列で?