Generation and Counting of Aztec Diamonds, both online and desktop
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dominoshuffling
electronapp/src/main/scala
electronmainprocess/src/main/scala
electronshared/src/main/scala/globalvariables
facades/src/main/scala
mainpage/src/main/scala
packaging
project
slides
slidesystem/src/main/scala
sourcehtml
webapp/src/main/scala/mainobject
webworker
README.md
build.sbt

README.md

Aztec Diamonds

The goal of this project is to allow, in just a few clicks, to generate random tilings of Aztec Diamonds and other various shapes.

An Aztec Diamond is a shape in the plane, composed of 1 by 1 squares. The shape looks like a Diamond. A tiling is a way of covering the shape with 1 by 2 or 2 by 1 dominoes. In 1992, the remarkably simple formula giving the number of all possible tilings of an Aztec Diamond of some order was discovered. The order of the Diamond is the number of rows in the upper half plane.

Aside from counting the number of tilings, taking one tiling at random led to amazingly rich structure that is still studied today. The number of tilings growth exponentially with the size of the shapes, and generating random tilings is thus a challenge.

The website contains a lot of information about Aztec Diamonds, and the possibilities of this project. A desktop version is also available, and allows for much bigger performances than the online version.

Algorithm

The algorithm implemented was discovered in 2006 by Élise Janvresse, Thierry de la Rue and Yvan Velenik in A Note on Domino Shuffling.

Technology

The project is implemented in Scala, and uses Scala.js for online version. The desktop version uses Electron for the user interface, and spawns a pure Scala application for computations, offering a performance boost up to 10 times better than the online version.

Acknowledgments

  • the Université catholique de Louvain, for hosting the website.
  • Justin Dekeyser, for his enormous help in HTML and CSS,
  • Tom Claeys, for his valuable comments and remarks, and for encouraging this project from the beginning,
  • Sébastien Doeraene, for his help with Scala and Scala.js in particular
  • Nicolas Radu and Alban Jago, for comments and bugs