0
私は、2D配列としてパスカルの三角形を生成する方法を書こうとしています。例:ここではRubyのPascal Triangle
pascal(3) # => [[1],[1,1],[1,2,1]]
は私のコードです:
def pascal n
pascal = []
row = [1]
(1...n).each do |i|
#first iteration set pascal equal to [[1]] and row to [1,1]
if i.zero?
pascal << row
#sets new value for row for next iteration
row = [1,1]
else
#row generator sets new value for row
row = ([0] + row).zip(row + [0]).collect { |a, b| a + b }
#push row's new value into pascal array
pascal << row
end
end
end
私は、行の発電機が正常に動作します知っている、私はIRBで自分自身をテストしてみました。あたかも実行されなかったかのように、出力は1...5
です。
私のコードに何が悪いと思いますか?私が初心者だとわかるように、穏やかにしてください。ありがとうアドバンス:)
私はそれがうまくいかなかった理由を知りました。私は反復にも集中していました。返すことを忘れました。 すぐにデバッグを開始します! – cerealCode
これは、最後の質問とまったく同じバグです。慣習的には、 'each'の代わりに' map'を使います。もしそうすれば、あなたのコードはそれだけでうまくいくでしょう。 –
知っておいて、私はそれぞれの違いを忘れてしまいがちです。範囲を '(1 ... n + 1) 'に変更して解決しましたが、代わりにmapを使用します – cerealCode