Creating graphics for pencil puzzles.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

MIT licensed by Robert Vollmert
Maintained by rfvollmert@gmail.com

Build Status


puzzle-draw is a library and command-line tool for drawing pencil puzzles using Diagrams. It aims to provide a utility layer on top of Diagrams to help with drawing arbitrary puzzles, as well as supporting several specific puzzle types directly. In addition, it includes functionality for parsing puzzle data from a YAML file format.


A liar slitherlink with solution:

Liar Slitherlink

This was rendered from the following YAML document:

type: slitherlinkliar
puzzle: |
  loop: |
  liars: |

There is a demo web application at puzzle-draw-demo.herokuapp.com that provides some more examples and that can be used to generate SVG images from such puzzle descriptions.

Or see a puzzle set that covers the puzzle types that are supported as of 2014-05.


This is a brief overview of how to install the command line tool. You'll need to get a Haskell environment, by installing the Haskell Platform. Then install puzzle-draw with cabal:

$ cabal install puzzle-draw

This will compile puzzle-draw against the SVG backend, and install a binary drawpuzzle that formats puzzles to SVG. Alternatively, you can compile against the Cairo backend by passing -fcairo:

$ cabal install -fcairo puzzle-draw

This will enable PDF and PNG output. Be warned that getting Cairo installed can be tricky on non-Linux platforms.


As an example, suppose the Liar Slitherlink puzzle description above is copied into a file slitherliar.pzl.

$ drawpuzzle slitherliar.pzl

This will generate two files slitherliar.svg and slitherliar-sol.svg, containing the puzzle and solved puzzle, respectively. Run

$ drawpuzzle -h

to see some command line options that allow modifying the program's behaviour, e.g., choosing the output format.

Changes 20161211

  • Upgrade diagrams version.
  • Add various new puzzle types.
  • Add solution code markers. 20141115

  • add installation and usage instructions to README
  • merge puzzle-draw-cmdline
  • update for diagrams 1.2 and ghc 7.8
  • add new puzzle types: Bahnhof, Cave
  • rename countnumbers to meanderingnumbers
  • include and use a nicer font
  • command-line option to list supported puzzle types
  • various tweaks and fixes 20140519

  • add new puzzle types: Maximal Lengths, Prime Place, Magic Labyrinth 20140419

  • add new puzzle types: Japanese Sums, Coral 20140409

  • add new puzzle type: Tapa

  • first release
comments powered byDisqus