In this round of optimisations we will apply another common technique for making progress in a Sudoku. It is also a good opportunity to explore a couple of additional data structures.
Here are some stats from the first round of optimisations:
➜ head -n100 sudoku17.txt | time ./Sudoku
...
./Sudoku 71.92s user 0.55s system 99% cpu 1:12.78 total