initial
incremental progress

* added placeholder methods that will generate the (hidden) solution and
the puzzle shown to the user
progress

methods to
* populate grid array with placeholder ints
* print grid
* generate random ints from 1 to gridsize
progress

* improved function that prints out grid
* made boxsize & gridsize "global" (bad?)
progress

Solution generation almost abides by the rules now. It checks current
row and column for used numbers but still needs to check the block.

Uses an array of bools to track used numbers, then makes an ArrayList of
the unused numbers. One number is chosen from the ArrayList at random to
be at the square.

Also todo: make the grid an "instance variable" instead of a variable
within the main method.
basic objective complete

* the board is implemented as an object
* getter and setter methods read and write attributes
* an instance of the whole class is passed to the methods that do the
actual work
* the generateSolution method uses an array of booleans named
usedNumbers and an ArrayList named candidates to help determine valid
numbers
* generating valid solutions is hard -- not there yet. Zeroes in the
board indicate squares where no valid number is available.
error counting method

implemented method countErrors, which does what it says given a board
gridText, errorLog properties

Made (1) the text output of the board and (2) the error report into
String type attributes of the class.
Output to console or elsewhere can be controlled more easily now.
first sync
adding .java file with experimental code
adding 'SudokuGame_.java', which is the old, unbroken copy...
SudokuGame.java implements cleaner OO, with proper constructors for the classes, reduced array use, and improved collection use (HashSets)
improved gridToText method for more spacing and compatibility with grids more than 1 digit in size
attempting to improve algorithm in experimental file SudokuGame_new.java
improved board generation algo with findSingleton, findHiddenSingle, and findMesh methods. Added new Class Unit to represent row/column/block groups.
updated date
implemented cell-level parameter sameUnit, which is the set of all cells in the same row/col/block. This enabled moving setCell method from SudokuGame class to Cell class
consolidated decision-making output to String parameter logicText
separating Unit and Cell classes into own files
now applying analysis logic columnwise and blockwise during generation