Category Archives: Projects

KenKen Solver – Multiple Solutions

A reader asks if the KenKen solver we recently developed can handle puzzles with multiple solutions. It turns out to be pretty simple to modify the search-and-propagation algorithm to return all the solutions to a puzzle, instead of just one.

Posted in Projects, Python | Comments Off

KenKen Solver: Online!

I ported the Python KenKen solver I was playing with last week over to JavaScript, and wrapped a GUI around it. You can check out the resulting web-based KenKen solver, if you’re interested.

Posted in Projects, Python | Comments Off

A Neat Hack

I admit to being unreasonably pleased with the following trick: The KenKen solver we’ve built and tuned can be generalized to solve Sudoku, including jigsaw Sudoku, with a 9-character change to its source code.

Posted in Projects, Python | Comments Off

Python Performance Tuning (con’t)

Let’s wrap up our hunt for performance improvements in our KenKen puzzle solver. This sort of thing can go on nearly endlessly, of course, but after today I think we’ll have gotten most of the easy stuff, and seen dramatic … Continue reading

Posted in Projects, Python | Comments Off

Python Performance Tuning (con’t)

Let’s continue tuning our KenKen puzzle solver. When we left off yesterday, we’d cut execution time by 30% with a one-line change to the program, but there is still much room for improvement.

Posted in Projects, Python | Comments Off

Python Performance Tuning

Having just built a solver for KenKen puzzles, this is a good opportunity to take a look at performance tuning in Python. Today we’ll look at some basic instrumentation, and begin searching for bottlenecks in the solver.

Posted in Projects, Python | Comments Off

Solver for KenKen puzzles (Search)

Today we complete the first version of our solver for KenKen puzzles. Previously we’ve defined constraint classes, input/output functions, and data structures; all that remains is to write the search and propagation code. Once again, this is all based on … Continue reading

Posted in Projects, Python | Comments Off

Solver for KenKen puzzles (Representation)

One of the biggest differences between KenKen puzzles and Sudoku puzzles is that the former are harder to represent compactly. Sudoku puzzles can be represented as a simple string of numbers, but the 2-dimensional cages of KenKen puzzles seem to … Continue reading

Posted in Projects, Python | Comments Off

Solver for KenKen puzzles (Constraints)

Today I’m going to show the Constraint implementation for a KenKen solver I’m building. This code will cover all the rules of the KenKen game, and will shortly be used in a constraint propogation and search algorithm. It contains several … Continue reading

Posted in Projects, Python | Comments Off

Solver for KenKen puzzles (Constraint design)

Following up on yesterday’s post, I’d like to get started on the construction of a solver for KenKen puzzles, using the same basic constraint-propogation-and-search approach that Norvig used in his Sudoku solver. I’m going to begin with a discussion of … Continue reading

Posted in Projects, Python | Comments Off