Hat/turtle jigsaw puzzle

This page contains the STL files for a 3D-printable jigsaw puzzle based on the aperiodic hat tiling discovered in 2023.

The puzzle pieces

The puzzle pieces

A tiling of hats can be morphed continuously into a tiling of ‘turtles’, by reversing the ratio of edge lengths, so that the shorter edges become long and the long edges short. In this puzzle, that morph takes place between the top and bottom surfaces, so that each piece has a hat on top and a turtle on the bottom, and the cross-sections in between change shape smoothly from one to the other.

`

The hats side The turtles side

The finished puzzle, both ways up

The two tilings are aligned in a way that bounds the distance between corresponding tiles, which means no tile has to lean over too far. The alignment involves scaling and rotation by irrational angles, so despite every piece having the same pair of shapes on top and bottom, no two pieces are the same shape overall.

Two halves of the puzzle

Two halves of the puzzle, opposite ways up, showing some piece edges

The tiles are distributed between four STL files, intended to be printed in different colours. This gives the finished puzzle a proper four-colouring (no two adjacent tiles are the same colour), which makes it a bit easier. But you could print it all in the same colour if you prefer it to be harder.

Here are five STL files:

(Of course, you don't have to pay any attention to the colours suggested in the file names. As you can see, even my own copy didn't. They're completely arbitrary. Up to you what colours you print it in!)

These files were designed and tested on one particular 3D printer. If yours is unhappy with them – for example, needing more clearance between puzzle pieces, or maybe making the puzzle taller so that the pieces don't lean over as far – then you may need to go back to the source code that I generated the STLs from. That code is in Rust, and it's here:

git clone https://git.tartarus.org/simon/hat-turtle-jigsaw.git

(comments to anakin@pobox.com)
(thanks to chiark for hosting this page)
(last modified on Thu Feb 26 11:50:46 2026)