TDDBC Sendai X Online で出題したお題
いちごは、種の段階から品種が決まっており、成長するとサイズが大きくなり、赤く色づいてくると出荷できるようになります。 農家さんは、出荷する際、できるだけ大きくて見栄えの良いいちごを選びます。見栄えによって出荷時の値段が変わってくるからです。
よりよいいちごを出荷するために今回は、いちごを題材にTDDを体験していただきます。
いちごを出荷するには、品種とサイズを知る必要があります。
品種とサイズを与えて、いちごを作成し、その文字列表現を取得しましょう。
文字列表現の例: あまおう: S
とちおとめ: M
もういっこ: L
なお、品種は、 あまおう
とちおとめ
もういっこ
の3種類、いちごのサイズは S
M
L
LL
の4種類です。
いちごは重さによってサイズが決定されます。 重くなるにしたがってサイズが大きくなります。
サイズではなく、重さを直接与えて、いちごを作成できるようにしましょう。
ただし、いちごの重さは 1g以上とし 0g以下は対象としなくてよいものとします。
なお、いちごのサイズは、重さによって決まります。
重さ と サイズ の関係性は以下のとおりです。
- 25g以上 →
LL
- 20g以上 →
L
- 10g以上 →
M
- 1g以上 →
S
例えば、 重さが 8g の あまおうの場合は、 あまおう: S
という文字列表現になります。
農家さんは、いちごを出荷するにあたり、見栄えをとても重視します。 特に、品種やサイズが揃っていると、見栄えがよいと判断します。
実際は、見栄えは品種やサイズだけでなく、他の情報(例: いちごの色つやなど)も影響します。しかし、今回のお題では、品種とサイズだけで判断するものとします。
2つのいちごが同一品種かどうかを判断できるようにしましょう。
以下に、例を示します。
あまおう: S
とあまおう: L
は、同じ品種ですあまおう: LL
ととちおとめ: LL
は、違う品種です
2つのいちごのサイズ差を取得できるようにしましょう。
以下に、例を示します。
あまおう LL
ととちおとめ L
の サイズ差 は1
ですもういっこ LL
とあまおう LL
の サイズ差 は0
ですもういっこ S
ともういっこ LL
の サイズ差 は3
です
一般に、パック内のいちごは同一品種、サイズのばらつきは少ないほどよいと言われています。
「いちご3個入パック」を作成し、次のふるまいを実装してください。
いちごパックが「純粋かどうか」を判定するふるまいを実装してください。
- いちごパック内のすべていちごが同一品種であるなら、純粋です
- いちごパック内に複数の品種のいちごが存在している場合は、純粋ではありません
いちごパック内のいちごの最小サイズと最大サイズの差を計算できるようにしてください。
以下に、例を示します。
あまおう L
とちおとめ L
もういっこ L
なら、サイズ差は 0 ですあまおう S
とちおとめ M
もういっこ L
なら、サイズ差は 2 ですあまおう L
とちおとめ M
もういっこ L
なら、サイズ差は 1 です
いちごパックの格付けをできるようにしてください。
格付けは 秀
優
良
可
の4種類で、秀
> 優
> 良
> 可
の順で評価が高いです
なお、 格付け は 純粋さ と 玉ぞろい(後述) によって決まります。
純粋さ | 玉ぞろい | 格付け |
---|---|---|
純粋である | 良 | 秀 |
純粋である | 普通 | 優 |
純粋である | 悪 | 良 |
純粋でない | 良 | 優 |
純粋でない | 普通 | 良 |
純粋でない | 悪 | 可 |
いちごのサイズが揃っている程度のことを「玉ぞろい」といいます。
玉ぞろいは 良
普通
悪
の 3段階で、良
> 普通
> 悪
の順で評価が高いです。
玉ぞろい は サイズ差 によって決まります。
サイズ差 | 玉ぞろい |
---|---|
0 | 良 |
1 または 2 | 普通 |
3 | 悪 |
今回の参加者の方々には、帰ってからも続きがやりたいと思ってもらえるように課題を作成しました。
課題の到達目標は、参加した全ペアが課題4まで到達できることです
序盤は、参加したペアがコミュニケーションを取りやすいように難易度を下げています。初めての方々が多いのでTAの方々は積極的に話しかけていただけると嬉しいです。
中盤は、テストフレームワークやリファクタリングを体験してもらえるように設計しています。中盤に入ると各ペアが自分たちで回せるようになってくる頃かなと思いますが、言語仕様もままならないペアもいるのでそういったペアにサポートの手を差し延べて暖かく見守って下さい。レビューの時間があるので、まさかりの準備をしつつレクチャーをお願いします。
終盤は、テストコードが肥大化し、テストコードのリファクタリングが必要なお題になるようにしました。ここまで進んだペアは、TDDBCにかなり慣れているチームだと思いますので、コードを読みつつ、まさかりの準備をお願いします。
以上
この演習問題は クリエイティブ・コモンズ 表示 - 継承 4.0 日本 ライセンスの下に提供されています。
短縮URL: http://bit.ly/2OqxA5a