Piano Moving Puzzle

Supervisor: Krysia Broda

The puzzle

The piano moving puzzle is a sliding block puzzle. Within a rigid rectangular frame of size 4 x 5 small squares there are 4 small square blocks, 1 large square block, 5 medium-sized rectangular blocks and 2 small square spaces (see picture). The aim is to move the large block to the position occupied by the small blocks starting from the initial position as shown.

Aim

The aim of this project is to write a program that allows a user to solve the piano moving puzzle. Basic requirements of the program are that it should be able to:

The last requirement should be implemented in Prolog and various approaches to solving the puzzle should be investigated. The other requirements can be in Java or some other language of your choice. Of course, you may consider allowing other starting positions - that's up to you.