Grout is a Java 1.1 program which solves tile-placing, edge-matching puzzles. It runs under the Sun JVM, the free OpenJDK and the Kaffe VM (albeit approximately twice as slowly last time I checked). Puzzles may be of the sort where an edge matches itself ('red' matches 'red') or where an edge matches its pair ('front' matches 'back').
Grout 1.1 only supports puzzles using tiles which have either four sides (square) or six sides (hexagonal). For hexagonal tiles, the board is either hexagonal or triangular. It works this out from the number of tiles, which means that only puzzles with certain number of tiles are accepted. Grout can also generate hexagonal puzzles of the sort shown to the right. The package comes with instructions and several sample puzzles.
You can get physical puzzles of the sort Grout solves from Lagoon Games.
I won the 2001 Oxford University Programming Competition, "Mental Hexercise", with this bit of code, which is the forerunner to Grout. It solves a specific class of six-sided self-matching puzzles (as illustrated). An encounter in early 2005 with a four-sided pair-matching puzzle from Lagoon Games at a friend's house inspired me to generalise the code. In the end, a bug prevented me finding the solution to that puzzle; I had to look it up. However, having used the answer to find the bug, Grout then found a second possible solution. This version was Grout 1.0.
In 2008, Mike Spivey (who runs the programming competition) used this problem again, but this time requested that triangular boards also be solved. For my own interest, I enhanced Grout to do so, resulting in Grout 1.1.
Why "Grout"? Well, grout sticks tiles together :-) It's also in honour of my University maths tutor, Dr. Peter Grout, who bore with superhuman patience my incompetent attempts to learn enough maths to do Chemistry. In the end, I gave up and switched to Computer Science, a course with a far smaller maths content. But I almost always enjoyed his classes, even if the enjoyment was occasionally tinged with fear.