protected void AddPuzzleState() { _puzzleStates.AddLast(Puzzle.CopyPuzzleState()); }
protected PuzzleSolver(TPuzzle puzzle) { Puzzle = puzzle; _puzzleStates.AddFirst(Puzzle.CopyPuzzleState()); }