From 2fa39190d11a473a907724e2394d104f9387a037 Mon Sep 17 00:00:00 2001 From: Rikuoh Date: Wed, 20 Mar 2024 13:22:12 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9C=E3=82=A6=E3=83=AA=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E3=81=AE=E3=82=B9=E3=82=B3=E3=82=A2=E8=A8=88=E7=AE=97=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=83=A9=E3=83=A0=E5=AE=8C=E6=88=902?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bowling.rb | 31 ++++++++----------------------- testbowl.sh | 9 +++++++++ 2 files changed, 17 insertions(+), 23 deletions(-) create mode 100755 testbowl.sh diff --git a/bowling.rb b/bowling.rb index 69f3dcf..83b358a 100755 --- a/bowling.rb +++ b/bowling.rb @@ -13,34 +13,19 @@ scores.each do |s| end end -frames = [] -shots.each_slice(2) do |s| - frames << s -end +frames = shots.each_slice(2).to_a point = 0 +strike = [10, 0] -frames[0..9].each_with_index do |frame, index| # 条件分岐を要するフレームの加点処理 +frames[0..8].each_with_index do |frame, index| point += frame.sum # 連続ストライクの場合、2つ先のフレームの1投目も得点となる - point += frames[index + 2].first if frame == [10, 0] && frames[index + 1].first == 10 - if frame == [10, 0] # ストライク1回のみの場合 - point += frames[index + 1].sum # 次のフレームの合計値が得点となる - end - if frame.sum == 10 && frame != [10, 0] # スペアの場合 - point += frames[index + 1].first # 次のフレームの1投目が得点となる - end + point += frames[index + 2].first if frame == strike && frames[index + 1] == strike + point += frames[index + 1].sum if frame == strike + point += frames[index + 1].first if frame.sum == 10 && frame != strike end -frames[10, 11].each do |frame| # 条件分岐を要しないフレームの加点処理 - point += frame.sum -end +frames[9..11].map { |frame| point += frame.sum } # 条件分岐を要しない加点処理 -point -= frames[10].sum if frames[10] # 計算結果から余剰加点を除外 - -if frames[11].nil? # 3投目が存在しなかった場合は得点を表示して終了 - puts point -elsif frames[11] == [10, 0] || frames[9] == [10, 0] - point -= frames[11].first # 計算結果から余剰加点を除外して得点表示 - puts point -end +puts point diff --git a/testbowl.sh b/testbowl.sh new file mode 100755 index 0000000..7c38223 --- /dev/null +++ b/testbowl.sh @@ -0,0 +1,9 @@ +#!/bin/bash +./bowling.rb 6,3,9,0,0,3,8,2,7,3,X,9,1,8,0,X,6,4,5 +./bowling.rb 6,3,9,0,0,3,8,2,7,3,X,9,1,8,0,X,X,X,X +./bowling.rb 0,10,1,5,0,0,0,0,X,X,X,5,1,8,1,0,4 +./bowling.rb 6,3,9,0,0,3,8,2,7,3,X,9,1,8,0,X,X,0,0 +./bowling.rb 6,3,9,0,0,3,8,2,7,3,X,9,1,8,0,X,X,1,8 +./bowling.rb X,X,X,X,X,X,X,X,X,X,X,X +./bowling.rb X,X,X,X,X,X,X,X,X,X,X,2 +./bowling.rb X,0,0,X,0,0,X,0,0,X,0,0,X,0,0