2

N値を取り、 3 つの整数N/2N/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]] です なぜ既存の値を置き換えないのですか新しい配列で?

4

2 に答える 2