Tracks
/
Nim
Nim
/
Exercises
/
Grade School
Grade School

Grade School

Easy

Instructions

Given students' names along with the grade that they are in, create a roster for the school.

In the end, you should be able to:

  • Add a student's name to the roster for a grade
    • "Add Jim to grade 2."
    • "OK."
  • Get a list of all students enrolled in a grade
    • "Which students are in grade 2?"
    • "We've only got Jim just now."
  • Get a sorted list of all students in all grades. Grades should sort as 1, 2, 3, etc., and students within a grade should be sorted alphabetically by name.
    • "Who all is enrolled in school right now?"
    • "Let me think. We have Anna, Barb, and Charlie in grade 1, Alex, Peter, and Zoe in grade 2 and Jim in grade 5. So the answer is: Anna, Barb, Charlie, Alex, Peter, Zoe and Jim"

Note that all our students only have one name (It's a small town, what do you want?) and each student cannot be added more than once to a grade or the roster. In fact, when a test attempts to add the same student more than once, your implementation should indicate that this is incorrect.

To get the test passing, you are going to need to create some types for your code to work on, you need an object for School to hold a sequence of type Student, which will be a tuple of string and int to hold name and grade for the students.

Here is some code for the types that could be helpful when getting started

type
  Student* = tuple[name: string, grade: int]
  School* = object
    students*: seq[Student]

Source

A pairing session with Phil Battos at gSchool
Edit via GitHub The link opens in a new window or tab
Nim Exercism

Ready to start Grade School?

Sign up to Exercism to learn and master Nim with 71 exercises, and real human mentoring, all for free.