小学校

小学校

初級

説明

生徒の名前とその生徒がいる学年が与えられたとき、学校の名簿を作成しましょう。

最終的には、次のことができるようになります。

  • ある学年の名簿に生徒の名前を追加できる
    • 「Jimを2年生に追加する。」
    • 「OK」
  • ある学年に在籍するすべての生徒のリストを取得できる
    • 「2年生にはどの生徒がいますか?」
    • 「今はまだJimしかいません。」
  • すべての学年のすべての生徒を並べ替えたリストを取得できる。 学年は1、2、3…の順に並べ替え、同じ学年の生徒は名前のアルファベット順に並べ替えます。
    • 「今、学校に在籍しているのは誰ですか?」
    • 「ええと、考えてみます。 1年生にAnna、Barb、Charlie、2年生にAlex、Peter、Zoe、5年生にJimがいます。 つまり答えは、Anna、Barb、Charlie、Alex、Peter、Zoe、Jimです。」

なお、生徒の名前はみな1つだけです(小さな町ですからね、何を期待するのでしょう?)。また、同じ生徒を同じ学年や名簿に複数回追加することはできません。 実際、テストで同じ生徒を複数回追加しようとした場合、実装はそれが正しくないことを示す必要があります。

ヒント

テストに合格するには、コードが扱う型をいくつか自分で作る必要があります。SchoolがStudent型のシーケンスを保持するためのオブジェクトが必要で、Studentは生徒の名前と学年を保持するstringとintのタプルです。

始めるときに役立つ、型のコードを載せておきます。

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

出典

gSchoolでのPhil Battosとのペアプログラミングセッション
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Nim Exercism

小学校を始める準備はできましたか?

Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、Nimを学んでマスターできます。すべて無料です。