# eternity

eternity, a MATLAB code which considers the eternity puzzle, which considers an irregular dodecagon shape that is to be tiled by 209 distinct pieces, each formed by 36 contiguous 30-60-90 triangles, known as polydrafters.

The region R can be decomposed into a coarse grid of hexagons, some of which are only partially contained in R, or a fine grid of 30-60-90 triangles, completely contained in R. We refer to these as the grid and the "subgrid". The grid can be drawn by bounding R by 90 nodes, and then connecting certain pairs, resulting in grid lines in 3 directions. The subgrid can be drawn by 180 boundary "subnodes", connecting certain pairs, and resulting in grid lines in 6 directions.

The subgrid is formed by 209 * 32 = 7524 congruent 30-60-90 triangles. To find a tiling of R, we can write 7,524 linear equations. Linear equation #I expresses the condition that triangle #I must be covered exactly once by one of the 209 shapes, in one of its possibly 12 orientations (involving rotations, reflections, and mirror imaging and a variable number of possible translations. The resulting underdetermined linear system can be treated as a linear programming (LP) problem, using optimization software such as CPLEX, GUROBI, or SCIP.

### Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

### Languages:

eternity is available in a MATLAB version and an Octave version.

### Related Data and Programs:

boat, a MATLAB code which considers the boat tiling puzzle, a smaller version of the eternity puzzle. The boat puzzle specifies a region R composed of 756 30-60-90 triangles, and a set of 21 "tiles", each consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

boomerang, a MATLAB code which considers the boomerang tiling puzzle, a smaller version of the eternity puzzle. The puzzle specifies a region R composed of 2376 30-60-90 triangles, and a set of 66 "tiles", each consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

boundary_word_drafter, a MATLAB code which describes the outline of an object on a grid of drafters, or 30-60-90 triangles, using a string of symbols that represent the sequence of steps tracing out the boundary.

eternity_hexity, a MATLAB code which evaluates and manipulates a six-fold parity quantity associated with grids and tiles used in the Eternity puzzle.

eternity_tile, a MATLAB code which considers the individual tiles of the eternity puzzle, 209 distinct pieces, each formed by 36 contiguous 30-60-90 triangles, known as polydrafters.

pram, a MATLAB code which considers the pram puzzle, a smaller version of the eternity puzzle. The pram puzzle specifies a region R composed of 2304 30-60-90 triangles, and a set of 64 "tiles", consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

serenity, a MATLAB code which considers the serenity puzzle, a smaller version of the eternity puzzle. The serenity puzzle specifies a dodecagonal region R composed of 288 30-60-90 triangles, and a set of 8 "tiles", each consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

tortoise, a MATLAB code which considers the tortoise tiling puzzle, a smaller version of the eternity puzzle. The puzzle specifies a region R composed of 1620 30-60-90 triangles, and a set of 45 "tiles", each consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

tortoise_cplex_test a BASH code which calls cplex(), to read the LP file defining the tortoise tiling problem, solve the linear programming problem, and write the solution to a file.

trinity, a MATLAB code which considers the trinity puzzle, a smaller version of the eternity puzzle. The trinity puzzle specifies a region R composed of 144 30-60-90 triangles, and a set of 4 "tiles", T1, T2, T3 and T4, each consisting of 36 30-60-90 triangles, and seeks an arrangement of the four tiles that exactly covers the region.

trinity_cplex_test a BASH code which calls cplex(), to read the LP file defining the trinity tiling problem, solve the linear programming problem, and write the solution to a file.

whale, a MATLAB code which considers the whale tiling puzzle, a smaller version of the eternity puzzle. The whale puzzle specifies a region R composed of 288 30-60-90 triangles, and a set of 8 "tiles", each consisting of 36 30-60-90 triangles, and seeks an arrangement of the tiles that exactly covers the region.

### Reference:

1. Marcus Garvie, John Burkardt,
A new mathematical model for tiling finite regions of the plane with polyominoes,
Contributions to Discrete Mathematics,
Volume 15, Number 2, July 2020.
2. Solomon Golomb,
Polyominoes: Puzzles, Patterns, Problems, and Packings,
Princeton University Press, 1996,
ISBN: 9780691024448
3. Ed Pegg,
Polyform Patterns,
in Tribute to a Mathemagician,
Barry Cipra, Erik Demaine, Martin Demaine, editors,
pages 119-125, A K Peters, 2005.
4. Mark Wainwright,
Prize specimens,
Plus magazine,
01 January 2001,
https://plus.maths.org/content/prize-specimens

### Source code:

Last revised on 08 June 2022.