最近会社の部署内で、ボーリングのスコア計算のプログラムを作るということがPGのネタのお題にあがっている。
最後をどう扱うか?テストどうやるか?というところがポイントになるらしぃ。
確かに、ボーリングのスコアの数え方はとてもシンプル。Wikipediaには下のように書いてある。
- フレームにおいてスペア・ストライクがない場合(オープンフレームと呼ぶ)、2回の投球で倒したピンの本数がそのフレームの得点となる。
- スペアを出した場合、倒した本数である10点に加え、次の1投球で倒したピンの本数がこのフレームの得点に加算される。
- ストライクを出した場合、倒した本数である10点に加え、続く2投球で倒したピンの本数が加算される。つまり次の投球もストライクだった場合は、さらにその次の投球(2フレーム先の第1投球)で倒したピンの本数まで加算される。
- 第10フレームのみ、スペア・ストライクを出した場合、3投して倒したピンの総数を第10フレームの得点として計算する。
- 各フレームの得点の合計が1ゲームの得点となる。最高得点は300点となる。
シンプルだけど、実装はそれなりに大変で、テストも大変。う~ん、どう組もう。