11th grade retreat

From Computer Science Wiki
This a problem set for you to work through [1]

This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:

  1. to build your skill applying computational thinking to a problem
  2. to assess your knowledge and skills of different programming practices

What is this problem set trying to do[edit]

This is example problem set. In this example we are learning about lists, conditionals, and processing user input.

The Problem[edit]

The 11th grade has a two-day retreat. This retreat will help them learn about CAS (Creativity, activity, service). There are 10 activities for the 11th grade retreat. Each activity can only have 8 students. Each student can make a primary request and a secondary request. Students can only be in one activity at one time.

Your solution must make the best possible match for all students. An example of the INPUT data is provided below:

# in the example below:
# student 1 wants to be in activity 4 and 5
# student 2 wants to be in activity 7 and 8
# and so on...

Unit Tests[edit]

If you accept the choices as input, your program must output (as an example):

# in the example below, activity 1 has students 1,5,7,8,9,12,17 and 75 (8 students)
activities = {

Hacker edition[edit]

Demonstrate you have made the best match. Essentially, you are providing information that most of the students had their first choice.

How you will be assessed[edit]

Your solution will be graded using the following axis:


  • To what extent does your code implement the features required by our specification?
  • To what extent is there evidence of effort?


  • To what extent did your code meet specifications?
  • To what extent did your code meet unit tests?
  • To what extent is your code free of bugs?


  • To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
  • To what extent is your code eliminating repetition?
  • To what extent is your code using functions appropriately?


  • To what extent is your code readable?
  • To what extent is your code commented?
  • To what extent are your variables well named?
  • To what extent do you adhere to style guide?


A possible solution[edit]

Click the expand link to see one possible solution, but NOT before you have tried and failed!

  1. track every first choice and every second choice (how many total choices are there for activity 1,2,3....)
  2. First of all, just try to get everyone into their first choice
  3. Then count how many students are in choice 1,2,3,4 etc
  4. Count the number of open / free spots in remaining activities
  5. If any activity has more than 10 students, look at the second choice of everyone in activity 1
  6. If any of the people in activity 1 have a second choice that is open, move them to that choice.