From 758de7a95ef679027cb0e68eb9ecf9816f3a6a48 Mon Sep 17 00:00:00 2001 From: Rikuoh Date: Mon, 11 Mar 2024 22:58:28 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=A9=E3=82=A4=E3=82=AF2?= =?UTF-8?q?=E5=9B=9E=E7=9B=AE=E3=81=AE=E8=A8=88=E7=AE=97=E3=81=AE=E9=80=94?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bowling.rb | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/bowling.rb b/bowling.rb index f88a851..87b6bbb 100755 --- a/bowling.rb +++ b/bowling.rb @@ -18,22 +18,20 @@ shots.each_slice(2) do |s| end point = 0 -spare = false -strike1 = false -strike2 = false -frames.each do |frame| - if frame[0] == 10 - point += 30 - elsif frame.sum == 10 - point += frame[0] + 10 - else - point += frame.sum +frames.each_with_index do |frame, index| + point += frame.sum + if frame == [10, 0] && frames[index + 1].first == 10 #ストライクかつ次もストライクの場合 + point += frames[index + 2].first end + if frame == [10, 0] && frames[index + 1].first != 10 #ストライク1回のみの場合 + point += frames[index + 1].sum #次のフレームの合計値が得点となる + end + if frame.sum == 10 # スペアの場合 + point += frames[index + 1].first #次のフレームの一投目が得点となる + end + puts "#{index + 1}フレーム目の得点: #{point}" end -puts point - -# 上記のコードを以下の旧式ルールに適合させる。 -# 10フレーム目だけ3投ある場合がある。 -# スペアとストライクの場合は現在のフレームだけでは計算ができない。(次の投球、次の次の投球の情報が必要) +#ストライクは次の「2投の合計値」が得点となる!!! +#つまりストライクを仮に1フレーム目で取り、2フレーム目もストライクだった場合、1フレーム目の得点には3フレーム目の初回分までが加算される!!!!