package org.guru.boggle; import java.io.IOException; import java.util.Set; public class Boggle implements Runnable { private final SimpleBoard board; private final DictionaryTrie dict; public Boggle() throws IOException { this.dict = new DictionaryTrie("/Users/scott/words"); this.board = new SimpleBoard(); } @Override public void run() { if (dict.containsWord("BUDDG")) { System.out.println("wtf?"); } for (BoardPosition p : board.allPositions()) { System.out.println("Starting position " + p); recurse(p, ""); } } public void recurse(BoardPosition p, String soFar) { char letter = board.letterAt(p); board.markUsed(p); soFar = soFar + letter; if (dict.containsWord(soFar)) { System.out.println(soFar); } Set possibleSuccessors = dict.possibleSuccessorLetters(soFar); for (BoardPosition q : board.adjacentUnusedNeighborPosition(p)) { char potentialSuccessor = board.letterAt(q); if (possibleSuccessors.contains(potentialSuccessor)) { recurse(q, soFar); } } board.clearUsed(p); } public static void main(String args[]) { try { new Boggle().run(); } catch (IOException e) { e.printStackTrace(); } } }