多くの人が地元のボウリングセンターに行ってボウリングのゲームを数回行っており、多くの人がスコアの計算に苦労しています。ワールドボウリングは、より多くの人々をスポーツに引き付けるために、単純化されたスコアリングシステムを導入しました。このスコアリングシステムは、国際的なゲームで利用されています。
スコアリングシステムは次のように機能します(Wikipediaから)。
「現在のフレームスコアリング」[32]と呼ばれるワールドボウリングスコアリングシステムは、次のようにピンを授与します。
- ストライク:30(ロールの結果に関係なく)
- スペア:10プラス現在のフレームの最初のロールのピンフォール
- オープン:現在のフレームの合計ピンフォール
10ピンボウリングに慣れていない場合は、ここで要約します。
ボウリングレーンの端には10本のピンがあり、ゴールはそれらすべてをボウリングボールで倒すことです。ボールを2回ロールして、それらをすべてノックダウンしようとします。できれば、最初のロールでそれらをすべてノックダウンしてください(ストライクとして知られています)。ストライクをした場合、そのフレームは完成しているので、ボールをもう一度転がす必要はありません。ストライキは30の価値があります。
10個すべてをノックダウンしなかった場合、もう1回ロールします。残りのピンをすべてノックダウンすると、スペアとして知られています。スコアは10ピン+最初のロールでノックダウンされたピンの数に相当します。たとえば、7つのピンをノックダウンした場合、残りの3つをノックダウンできたので、17の価値があります。
2回目のロールの後、10個すべてをノックダウンできない場合、それはオープンフレームとして知られています。スコアは、そのフレームでノックダウンされたピンの総数に相当します。
ゲームには10個のフレームがあります。従来のボウリングスコアリングに精通している場合、ワールドボウリングスコアリングで10番目のフレームに余分なロールはありません。従来のボウリングスコアリングでは、300の完全なスコアを得るには12回連続でストライクが必要でしたが、ワールドボウリングスコアリングでは10回の連続ストライクしか必要ありません。
チャレンジ
あなたの課題は、スコアシートから値を与えられたスコアを計算することです。
スコアシートでは、ミスはダッシュ(-)、ストライクはX、スペアはスラッシュ(/)で示されます。これらが当てはまらない場合、ピンフォールカウントは単に数字(1-9)で示されます。ファウルとスプリットもスコアシートに記録されますが、これらについて心配する必要はありません。
入力
各フレームのスコアで構成される文字列が与えられ、合計10フレームになります。各フレームには最大2つの値があり、ストライクが発生した場合は1つの値になります。入力は、関数への文字列パラメーター、ファイル、またはSTDINから読み取ることができます。
たとえば、最初のロールで1つのピンをノックダウンしてから2をノックダウンすると、フレームは「12」のようになります。これは12(12)を意味するのではなく、1と2を意味し、合計3です。
両方のロール(ガターボール)ですべてのピンを見逃した場合、この「-」(スコア0)のように見えます。
各フレームはスペースで区切られます。
サンプル入力
-- 9- -9 X -/ 8/ 71 15 44 X
この例を分解するには、
- フレーム1(-)-両方のロールが失敗しました。0点数
- フレーム2(9-)-最初のロールで9をノックダウンし、2番目のロールでミスしました。スコア9
- フレーム3(-9)-1回目はすべて逃し、2回目は9回逃しました。スコア9
- フレーム4(X)-ストライク、10個すべてをノックダウン。スコア30
- フレーム5(-/)-スペア、最初はすべてミス、2回目はすべてノックダウン。スコア10 + 0 = 10
- フレーム6(8 /)-スペア、最初のロールに8ピン、2番目のロールで他の2つをノックダウン。スコア10 + 8 = 18
- フレーム7(71)-オープンフレーム、最初のロールに7ピン、2番目のロールに1ピン。スコア7 + 1 = 8
- フレーム8、9、10は上記と同じ例に従います。
出力
出力は、10個すべてのフレームのスコアの合計を含む値になります。サンプル入力を使用すると、出力は128になります。出力は文字列または数値タイプの場合があります。関数の戻り値か、STDOUTに書き込まれます。
ルール
- 入力は常に有効であると仮定します。たとえば、無効なフレームは「/ 8」、「XX」、「123」、「0」などです。
- スプリットやファウルについて心配する必要はありません。
- コードは、完全なプログラムでも、文字列を取り込んでスコアを返す関数でもかまいません。
- コードで例外をスローしないでください。
- これはコードゴルフです。バイト数が最も少ない答えが勝ちです。
- インクルードまたはインポートを使用する言語は、コードの一部としてインポートステートメントを含め、バイトカウントにカウントする必要があります。
テストケース
"-- 9- -9 X -/ 8/ 71 15 44 X" -> 128
"-- -1 2- 12 22 5- 42 61 8- 72" -> 45
"X X X 1/ 2/ 3/ 4/ 5/ -- 9/" -> 174
"X X X X X X X X X X" -> 300
"-- -- -- -- -- -- -- -- -- --" -> 0