ボウリングゲーム

https://gist.github.com/2714258

数ヶ月かけて、解いた。すっきりした。

問題文は、ちと変種。ストライクのときも 2投目は、0は省略せずのタイプ。

数列 を 下記のように変換していく方針

 [5,4,0,0,10,0,9,1,6,3,7,0,6,2,10,0,10,0,1,9,5]
 [[5, 4], [0, 0], [10, 0, 9, 1], [9, 1, 6], [6, 3], [7, 0], [6, 2], [10, 0, 10, 0, 1], [10, 0, 1, 9], [1, 9, 5]]
 [5, 4, 0, 0, 10, 0, 9, 1, 9, 1, 6, 6, 3, 7, 0, 6, 2, 10, 0, 10, 0, 1, 10, 0, 1, 9, 1, 9, 5]


に変換して、足し算する方針。
計算のキモは、各フレームごとの足し算する範囲を 幾つかのパターンで 場合分けできればOK。
範囲をパターン分けできれば、map して flatten して reduce する コンボを決めれば良い。