Provide primitives to construct words over free groups to solve picture-hanging puzzles
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status

In Picture-Hanging Puzzles a famous puzzle, and some of its generalisations are solved using a words over a free group.

This project offers primitives which enable a developer to express words over free groups and operate on these words in similiar ways as expressed in the article.

Free Group

Wikipedia has a nice article on free groups.

In mathematics, a group G is called free if there is a subset S of G such that any element of G can be written in one and only one way as a product of finitely many elements of S and their inverses (disregarding trivial variations). Apart from the existence of inverses no other relation exists between the generators of a free group.


Python is used in this project. Make sure that python is able to find the project. I usually add the current directory to the PYTHONPATH with the following command.

> export PYTHONPATH=.


Execute the following command to run all tests in the project

> python picture/test/


To solve a picture hanging puzzle with n pins run

> bin/picture-hanging n