私は、数独パズルを解くためのクラスを書いています。このクラスにはCells
、これらの2次元配列へのポインターを含む2次元配列がいくつかあります。このようなもの:
def class Sudoku
attr :rows, :columns, :blocks
def initialize
# build each of the rows, columns, and blocks with a 9x9 map of Cells
end
end
def class Cell
attr :value, :row, :column, :block
def initialize(row, column, block, value)
# set each pointer to its parent row, column and block etc
end
end
問題は、私が次のようなことをするときです。
p = Puzzle.new
でirb
、irbがフリーズします。コードの一部を変更したので、それは実行されませんが、変更した場合は次のようになります。
irb> p.rows
=> TONS OF SHIT GETS RETURNED
何トンものネストされたポインタを出力し、irb
プロンプトに戻るまでに約20秒かかります。これの多くは、いくつかの無限のポインタと関係があります。
p.rows[0][0].row[0].row[0].row[0]....
したがって、Rubyがこの配列の浅い表現を返す方法があるかどうか疑問に思っています。これは、そのすべてのポインターが最終的にそれ自体を指すようになるためです。