Skip to content

Instantly share code, notes, and snippets.

@135yshr
Last active March 30, 2021 14:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 135yshr/3a894104e63074ae307e6c26867a6e54 to your computer and use it in GitHub Desktop.
Save 135yshr/3a894104e63074ae307e6c26867a6e54 to your computer and use it in GitHub Desktop.
TDDBC Sendai X Online お題

いちごの格付け

TDDBC Sendai X Online で出題したお題

今回のお題について

いちごは、種の段階から品種が決まっており、成長するとサイズが大きくなり、赤く色づいてくると出荷できるようになります。 農家さんは、出荷する際、できるだけ大きくて見栄えの良いいちごを選びます。見栄えによって出荷時の値段が変わってくるからです。

よりよいいちごを出荷するために今回は、いちごを題材にTDDを体験していただきます。

課題1: いちごの作成

いちごを出荷するには、品種とサイズを知る必要があります。

品種とサイズを与えて、いちごを作成し、その文字列表現を取得しましょう。

文字列表現の例: あまおう: S とちおとめ: M もういっこ: L

なお、品種は、 あまおう とちおとめ もういっこ の3種類、いちごのサイズは S M L LL の4種類です。

課題2: 重さからいちごの作成

いちごは重さによってサイズが決定されます。 重くなるにしたがってサイズが大きくなります。

サイズではなく、重さを直接与えて、いちごを作成できるようにしましょう。

ただし、いちごの重さは 1g以上とし 0g以下は対象としなくてよいものとします。

なお、いちごのサイズは、重さによって決まります。

重さ と サイズ の関係性は以下のとおりです。

  • 25g以上 → LL
  • 20g以上 → L
  • 10g以上 → M
  • 1g以上 → S

例えば、 重さが 8g の あまおうの場合は、 あまおう: S という文字列表現になります。

課題3: いちごの比較

農家さんは、いちごを出荷するにあたり、見栄えをとても重視します。 特に、品種やサイズが揃っていると、見栄えがよいと判断します。

実際は、見栄えは品種やサイズだけでなく、他の情報(例: いちごの色つやなど)も影響します。しかし、今回のお題では、品種とサイズだけで判断するものとします。

課題3-1: いちごの品種

2つのいちごが同一品種かどうかを判断できるようにしましょう。

以下に、例を示します。

  • あまおう: Sあまおう: L は、同じ品種です
  • あまおう: LLとちおとめ: LL は、違う品種です

課題3-2: いちごのサイズ差

2つのいちごのサイズ差を取得できるようにしましょう。

以下に、例を示します。

  • あまおう LLとちおとめ L の サイズ差 は 1 です
  • もういっこ LL あまおう LL の サイズ差 は 0 です
  • もういっこ Sもういっこ LL の サイズ差 は 3 です

課題4: いちごパック

一般に、パック内のいちごは同一品種、サイズのばらつきは少ないほどよいと言われています。

「いちご3個入パック」を作成し、次のふるまいを実装してください。

課題4-1: 品種の純粋さ

いちごパックが「純粋かどうか」を判定するふるまいを実装してください。

  • いちごパック内のすべていちごが同一品種であるなら、純粋です
  • いちごパック内に複数の品種のいちごが存在している場合は、純粋ではありません

課題4-2: いちごのばらつき

いちごパック内のいちごの最小サイズと最大サイズの差を計算できるようにしてください。

以下に、例を示します。

  • あまおう L とちおとめ L もういっこ L なら、サイズ差は 0 です
  • あまおう S とちおとめ M もういっこ L なら、サイズ差は 2 です
  • あまおう L とちおとめ M もういっこ L なら、サイズ差は 1 です

課題5: いちごパックの格付け

いちごパックの格付けをできるようにしてください。

格付けは の4種類で、 > > > の順で評価が高いです

なお、 格付け は 純粋さ と 玉ぞろい(後述) によって決まります。

純粋さ 玉ぞろい 格付け
純粋である
純粋である 普通
純粋である
純粋でない
純粋でない 普通
純粋でない

いちごのサイズが揃っている程度のことを「玉ぞろい」といいます。

玉ぞろいは 普通 の 3段階で、 > 普通 > の順で評価が高いです。

玉ぞろい は サイズ差 によって決まります。

サイズ差 玉ぞろい
0
1 または 2 普通
3

お題の作成にあたって

今回の参加者の方々には、帰ってからも続きがやりたいと思ってもらえるように課題を作成しました。

課題の到達目標は、参加した全ペアが課題4まで到達できることです

序盤は、参加したペアがコミュニケーションを取りやすいように難易度を下げています。初めての方々が多いのでTAの方々は積極的に話しかけていただけると嬉しいです。

中盤は、テストフレームワークやリファクタリングを体験してもらえるように設計しています。中盤に入ると各ペアが自分たちで回せるようになってくる頃かなと思いますが、言語仕様もままならないペアもいるのでそういったペアにサポートの手を差し延べて暖かく見守って下さい。レビューの時間があるので、まさかりの準備をしつつレクチャーをお願いします。

終盤は、テストコードが肥大化し、テストコードのリファクタリングが必要なお題になるようにしました。ここまで進んだペアは、TDDBCにかなり慣れているチームだと思いますので、コードを読みつつ、まさかりの準備をお願いします。

以上

クリエイティブ・コモンズ 表示 - 継承 4.0 日本 この演習問題は クリエイティブ・コモンズ 表示 - 継承 4.0 日本 ライセンスの下に提供されています。

短縮URL: http://bit.ly/2OqxA5a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment