コンウェイのライフ ゲームを作成できるように単純な 10x10 配列を作成しようとしていますが、奇妙な動作が発生します。まず、ボードを初期化します。
@board = Array.new(10, Array.new(10))
(0..9).each do |row|
(0..9).each do |column|
@board[row][column] = rand(0..1)
end
end
これが生成されます:
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
1000000111
怪しいように見えますが、これがランダムに生成される可能性は十分にあります。本当の問題は、個々のセルの値を設定しようとしたときに始まります。値を変更すると、列全体がその値に設定されます! たとえば、最初のセルの値を変更するとします。
@board[0][0] = 0
私が得るものは次のとおりです。
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
0000000111
何を与える?0, 0 のセルだけではなく、列 0 のすべてのセルの値が変わるのはなぜですか?