I wrote a sudoku solver and found that it used many interesting programming constructs: classes, callback functions, bitmaps, recursion and some interesting algorithms. Look up some of the techniques to solve sudoku and then start coding. You'll have fun.
Hint: Create a class named Token_stream to tokenize the input.
The class should contain two necessary fucntions putback() and get()
to get the current buffer.
Make sure to deal with any kind of bad input using exceptions <stdexcept>.