This assignment is loosely based on the game of 24, but we will define our own rules here, so please pay to attention what is below, rather than following what is on the Web.

Just as you did in TweeSearch, to give you a feel for software development efforts, you will do this project in stages. At each stage you will be given slightly different and changing requirements, and must turn in a solution that matches that stage. Please do not move on to the next stage until you have submitted the current stage.

To help you with planning, there are six stages in all, all of roughly the same or lower complexity than the first stage—though your mileage may vary, so it pays to start early. But because the problem will keep evolving, you will benefit from making your code cleaner, a little more abstract, and more flexible so that it’s open to change.

Critical notes:
  • You should treat this assignment like an exam. Therefore, you:

    • cannot talk to another student about it until you are both done. In particular, you cannot discuss what the next stage is, etc.

    • should do this work without consulting course staff except for critical issues (broken links, possible assignment typo, etc.), and the one exception noted in a later stage.

    • should not try to peek ahead to the next stages through any means; doing so would be a violation of the Academic Code.

  • Unlike in previous assignments, you will be given only one chance to submit at each stage (like a company making a code release of a new version). So please submit with care.To repeat: you can submit each stage only once.

  • In the forms you will need to enter numbers. Please don’t use commas, etc. Use one of Pyret’s notations (if you need, you can use decimal or fractional): whatever you write should be machine-readable by Pyret (paste it back into Pyret to make sure it is accepted, before submitting).

  • You may use any features or libraries you have used on prior homeworks.

  • Use the filenames 24-code-1.arr, 24-code-2.arr, and so on for each stage.

  • We will be evaluating your code in part based on how effectively it can be reused in more general contexts.

  • There are no wheats and chaffs for this assignment. For this reason, use just CPO for this assignment.

  • Except when indicated otherwise, assume each part of the assignment specification remains unchanged in subsequent stages.

Theme Song:

24k Magic by Bruno Mars

Once you’ve read these instructions, go to Stage 1.