## Posts

### Solving variant sudoku in MiniZinc

It’s straightforward to model and solve a Sudoku puzzle using MiniZinc. But the modern Sudoku world (as can be seen on the Cracking the Cryptic Youtube channel) is full of variants with exotic constraints – let’s see how hard it is to model those.

### Möbius Front '83 Solitaire Cribbage solver

Zachtronics’s recent game

*Möbius Front ‘83*– like most of their offerings – contains an optional card game inside. This time it’s a solitaire version of cribbage, where you get points for playing cards in sets and combos. It rewards careful thinking and planning ahead, which sounds like a lot of work; let’s get the computer to do it instead.### Rubiks Race Re-rolling

My son recently picked up a copy of

*Rubiks Race*, a kids’ board game that’s essentially a slide puzzle turned into a two-player showdown. You first generate a random target pattern by rolling nine six-coloured dice in a little container, and then each player slides their tiles around to match the pattern. Sometimes the target pattern is invalid – when it has 5 or more of the same colour – but how often exactly?### Greater-than Sudoku in MiniZinc

Greater-than Sudoku is like an ordinary Sudoku puzzle, but the number clues are replaced with less-than and greater-than relations.

Sergii Dymchenko showed how to solve it with ECLiPSe, and Hakan Kjellerstrand translated that to Picat, so I couldn’t resist trying to model it in MiniZinc.

### Template Haskell for faster linear interpolation

An application I’m writing requires a lot of linear interpolation of a function. There’s so much of it, in fact, that it was the biggest single contributor to the running time. In this article I show how I used Template Haskell to make it much faster and cut the overall running time of the application by about a third.

### Diagrams + Cairo + Gtk + Mouse picking

Diagrams is the best library for drawing diagrams in Haskell. But can it be used as part of a user interface so you can interact with parts of a diagram?

The answer is: yes.

### Sequence, full laziness, space leak

Recently I was surprised by the behaviour of a Haskell program I wrote. This simple example demonstrates the problem:

### Diagrams internals

This article covers a small part of the internals of Diagrams, a Haskell library for drawing static and animated diagrams. In particular, I give an overview of how a diagram is represented, how paths work, and how attributes are applied to diagrams. The Diagrams library has a lot in it, so not everything can be covered in great detail in such a short article.

### Automatic Minesweeper Solver

The game

*Minesweeper*is a fun diversion, but even more fun would be to get the computer to solve it for us. I’ve written a basic solver for the version of Minesweeper from Simon Tatham’s excellent Portable Puzzle Collection, called*Mines*. My solver interacts with the game just like a human player would: by reading the screen’s contents and moving and clicking the mouse.Here is a video of the solver in action.

### Solving Hexiom using Constraint Programming

A few months ago, Laurent Vaucher wrote a couple of articles (starting with this one) about solving the puzzle game

*Hexiom*using search algorithms and hand-crafted constraint propagation. It looked like an interesting puzzle, and I was curious about how well a generic constraint solver would perform and how to model the problem. Here I describe how I used MiniZinc and Gecode to tackle it.

subscribe via RSS