3

私は、数独パズルを解くためのクラスを書いています。このクラスには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がこの配列の浅い表現を返す方法があるかどうか疑問に思っています。これは、そのすべてのポインターが最終的にそれ自体を指すようになるためです。

4

1 に答える 1

2

パズルで検査を再定義し、必要なものだけを表示します。

例えば:

def inspect
  "Puzzle with size #{rows.size}"
end
于 2010-11-04T18:01:42.800 に答える