||CellState records the number of candidates remain for each
separate cell on the grid.
||A Composer object attempts to compose valid Su Doku puzzles with the
||A ControlContainer instance contains the various buttons and text
fields that sit underneath the Su Doku grid and control
||The 'FirstAvailable' strategy always selects the first valid choice
it finds in any situation - it doesn't make any attempt to rank the
||A Grid object represents a partially-filled Su Doku grid.
||The GridContainer class displays a Su Doku grid.
||InvulnerableState records the number of cells that would remain
unresolved for each given move (ie each cell/value pair).
||The LeastCandidatesCell strategy calculates the number of seemingly valid
candidates (of course, for a problem with a unique solution, there is only
one strictly valid candidate for each cell - a candidate is deemed
'seemingly valid' if it isn't blatantly contradicted by another cell in
that row, column or subgrid) for each cell in the grid, and fills the cells
with the least number of possible candidates first.
||LeastCandidatesHybrid combines the Least Candidates Cell and Least
Candidates Number strategies.
||The LeastCandidatesNumber strategy calculates, for each combination of
number and sector (where a sector is a generic term that covers rows,
columns and subgrids), the number of valid candidate cells and fills
the the sectors with the least number of possible candidate cells first.
||The MaskFactory class iterates through the complete set of possible
masks (a mask is a boolean array that indicates whether the
corresponding cells in Su Doku grids should have their initial values
exposed) of a given size.
||The MostCandidates strategy makes the move at any timestep that
will eliminate the greatest number of remaining candidates.
||NumberState records the number of candidates remain for each
value/sector on the grid, where a sector is any row, column
||A Solver instance solves a grid on a thread that exits
gracefully if interrupted.
||Provides a single point of access to the various strategy classes.
||StrategyBase handles several thread-related function common to
most implementors of IStrategy.
||The SuDoku app displays a Su Doku solver in a new window.
||Creates an applet that displays a Su Doku solver.
||The SuDokuClipboard implements its own clipboard in a seperate window in order
to work around the security restrictions that affect access to the system clipboard
from an applet.
||A SuDokuContainer contains two components - a GridContainer and
||A Traversal object is used to store the moves made during
an attempt to solve a Su Doku puzzle.