小学校

小学校

中級

説明

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

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

  • ある学年の名簿に生徒の名前を追加する:
    • 「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つだけです(小さな町ですから、仕方ないでしょう?)。また、同じ生徒を1つの学年や名簿に2回以上追加することはできません。 テストで同じ生徒を2回以上追加しようとした場合は、実装でそれが正しくないことを示す必要があります。

ワード

名簿を保持するschoolタプルを定義します。その中で生徒をどう格納するかは自由です。その後、以下に挙げるワードを実装しましょう。

  • <school> ( -- school ):空の学校を作ります。
  • add-student ( school name grade -- ? ):nameをgradeに追加します。成功したらtを返し、nameがすでに追加されている場合(この学年でも他の学年でも)はfを返します。その場合、名簿は変更されません。
  • roster ( school -- names ):すべての生徒を、学年順、次に名前のアルファベット順に並べたものです。
  • grade ( school n -- names ):学年nの生徒を、名前のアルファベット順に並べたものです。

出典

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

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

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