Sudoku Solver

in progress

My portfolio item #1

This Sudoku solver began as a personal project to hone my skills in Java. The goals were: to implement object-oriented programming principles, design and analyze an algorithm to fill a sudoku puzzle quickly, and to have fun while doing it.

The program currently parses through a text file containing a Sudoku puzzle and creates an object instance of a Sudoku board. The method of solving this puzzle at the moment is raw brute force. Every single cell is analyzed and given an array of possible numbers it can be. Then, in piecemeal fashion, it dives recursively into one of the possibilities and creates a new state.

Once the program reaches a conclusion and has no more valid moves left, it begins to backtrack. The awesome aspect of this solver, though, is that it is generic in the sense that any Sudoku puzzle will be solved by it, given that it is a valid size (a n*n grid where sqrt(n) is a whole number).

Upcoming plans for this program include creating a web application and a full UI system for ease of use. I am also working on a Sudoku generator. And, of course, the steady but oh so slow brute force approach is just stepping stone to a much more elegant solution.

You can view this project on my github!