package net.jcip.examples; import java.util.*; /** * SequentialPuzzleSolver *
* Sequential puzzle solver * * @author Brian Goetz and Tim Peierls */ public class SequentialPuzzleSolver{ private final Puzzle
puzzle; private final Set
seen = new HashSet
(); public SequentialPuzzleSolver(Puzzle
puzzle) {
this.puzzle = puzzle;
}
public List (pos, null, null));
}
private List node) {
if (!seen.contains(node.pos)) {
seen.add(node.pos);
if (puzzle.isGoal(node.pos))
return node.asMoveList();
for (M move : puzzle.legalMoves(node.pos)) {
P pos = puzzle.move(node.pos, move);
PuzzleNode child = new PuzzleNode (pos, move, node);
List