Texas A&M University primary mark

Department of Computer Science and Engineering

Sample Image

Artificial Intelligence

Programming Assignment 0

The programming assignment for the week 25th January to 1 February, 2016 is to implement a search algorithm to solve the following puzzle.

Overview

Jean Claude Constantin created this puzzle which combines two cylindrical labyrinths with the mechanical contrivance of interlocked gears, and the result is rather neat. He dubbed it Zahnradlaby, though it is also known as the Double Gear Maze.

You begin with the gears rotated to a designated starting position, the two stainless steel balls under the start holes (within the inner circle, apostrophe shaped). The objective is remove both the balls: this can only be done by moving them to the outer circles. If you click on the first image, it'll show the puzzle in detail. The second image links to a video allows you to see parts of the puzzle that are occluded in the first photo, and gives an idea for how motion of the gears works.

Original Source: http://mypuzzlecollection.blogspot.com/2013/04/zahnradlaby-double-gear-maze.html

Objective

Write a program that will produce a sequence of actions to solve the puzzle.

  1. Think about the problem! Keep notes on all the observations you make about the puzzle.
  2. What modeling assumptions did you introduce? How abstract is the code?
  3. Design your solution by thinking about your data structures and representations.
  4. What are the basic modules and components? Why did you choose them?
  5. How do you think about the performance of the code?
  6. What are limitations of your program? Are these a consequence of design decisions or implementation constraints?
  7. What are the features you're most proud of?
  8. What was the most unexpected thing you encountered? Of the observations you made (in 1.), which do you wish you'd made sooner?

Students are expected to be able to show and discuss their current code and design approach in front of the class. Ensure that you have the code, either (i) available online; (ii) or on some portable media (e.g., USB drive); (iii) or a laptop or other device that they can project from if called upon.

In class discussion

You are expected to follow, compare, and ask informative questions from the code shown by your peers.

Don't waste time writing up fancy reports!

Focus on solving the problem and getting the implementation working. Take note of the questions above, so that you have something sensible to say about any of those things if you are called upon to speak. Perhaps you'll have questions for your peers, e.g., regarding things you found tough, or for which you came up with something particularly cunning.

Collaboration policy

You can and should talk to everyone in the class. Do it in class, do it outside of class.

You can exchange ideas. You can exchange code, but if you copy something it should be exchanged in public via piazza. Monitor this (I will). Contribute (I will). Ask questions (I will). Answer questions (I will).

Only one thing: Do not look for solutions to the problems on the internet. We are not interested in existing answers.

Be creative!

You can can probably think of multiple ways to solve the problem. Maybe you think you have a clever idea which is, say, elegant, or more general, or might just be creative and original? If so, you are strongly encouraged to take this approach and do the one you think most interesting.

We have a whole class of people who'll be implementing something. The collective objective to discover something new, there is a chance that your doing something unconventional will give you an insight you can show to all of us.

• Texas A&M University •