Sudoku solving and enumerating

I just published a repository with several different sudoku solvers.

This code was sitting around on my hard disk for six years now. It came into existence during a phase of intense interest in the different ways to represent and solve sudokus.

Sometimes such phases happen to me. Then a particular problem (like sudokus) triggers my desire to read and learn about many different perspectives, techniques and topics (like quadratic programming, Monte Carlo simulations, optimisation algorithms, constraint programming, backtracking, massively parallel tree traversal, genetic algorithms, code golf, ...). But after a while, this desire loses intensity, and usually most of the big plans I made remain unfinished or even unstarted.

At the moment it is happening again, so maybe there will be a blog post about it in 6 years.

The repository contains:

  • A object oriented C library with datastructures and methods to read partially filled sudokus.
  • A number of hintfiles with partially filled sudokus
  • several implementations of a backtracking solver
  • several implementations of a Monte Carlo solver invented by me. I was/am very proud of that, as it constituted a real breakthrough in my head, connecting many different fields. And it works surprisingly well.
  • a implementation of a Newton Method solver (which does not perform very well) in Matlab
  • a sudoku solver in 532 characters
  • a set of notes in german (incomplete and unfinished with respect to the plans I had initially, but still usefull)

Maybe it is of interest for someone out there.