The Java sudoku solver is coming along nicely. There are still a few obvious things missing; in particular there’s a simple strategy that should speed up solving quite a bit. (Which I won’t try to explain here.)

After that’s done, there’s a plan in the back of my mind to make it multi-threaded, or possibly even distributed. I’m not sure about the best place to split it up yet… For solving a puzzle that’s known to have one solution, or towards the end of generating a puzzle where only a few of the branches are valid, splitting up the brute force tasks should be fairly useful; but for choosing a value for the first cell of an empty puzzle, every branch has a valid solution, so having multiple threads exploring all of them is pointless. The most profitable time to split up the task would be early enough that the available branches are deep, and will take a while for each of the threads to explore; but late enough that only one of them is expected to be valid.

The interesting question is whether it’s possible to recognise that point.

Anyway, here’s a result from the current version. The 4×4 (er, 16×16) puzzle below took just over ten hours to generate.

…is what I’m thinking about now. (Okay, technically, are what I’m thinking about now.)

Don’t have time for a fully explanatory post right now; I just wanted to get something on here so that the new blog doesn’t stagnate before it’s even started. So here’s a bullet-point-form introduction:

Zendo is a game where players try to guess the Master’s secret rule by probing it with examples.

Inductive logic is… the same thing, really, except generalised to not necessarily include players, a Master, or… plastic pyramids.

Doing either of these things algorithmically is, in general, hard. But in an interesting way.