ボウリングのスコア計算プログラム完成2
This commit is contained in:
parent
1d5aeac6fd
commit
2fa39190d1
2 changed files with 17 additions and 23 deletions
29
bowling.rb
29
bowling.rb
|
@ -13,34 +13,19 @@ scores.each do |s|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
frames = []
|
frames = shots.each_slice(2).to_a
|
||||||
shots.each_slice(2) do |s|
|
|
||||||
frames << s
|
|
||||||
end
|
|
||||||
|
|
||||||
point = 0
|
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
|
point += frame.sum
|
||||||
# 連続ストライクの場合、2つ先のフレームの1投目も得点となる
|
# 連続ストライクの場合、2つ先のフレームの1投目も得点となる
|
||||||
point += frames[index + 2].first if frame == [10, 0] && frames[index + 1].first == 10
|
point += frames[index + 2].first if frame == strike && frames[index + 1] == strike
|
||||||
if frame == [10, 0] # ストライク1回のみの場合
|
point += frames[index + 1].sum if frame == strike
|
||||||
point += frames[index + 1].sum # 次のフレームの合計値が得点となる
|
point += frames[index + 1].first if frame.sum == 10 && frame != strike
|
||||||
end
|
|
||||||
if frame.sum == 10 && frame != [10, 0] # スペアの場合
|
|
||||||
point += frames[index + 1].first # 次のフレームの1投目が得点となる
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
frames[10, 11].each do |frame| # 条件分岐を要しないフレームの加点処理
|
frames[9..11].map { |frame| point += frame.sum } # 条件分岐を要しない加点処理
|
||||||
point += frame.sum
|
|
||||||
end
|
|
||||||
|
|
||||||
point -= frames[10].sum if frames[10] # 計算結果から余剰加点を除外
|
|
||||||
|
|
||||||
if frames[11].nil? # 3投目が存在しなかった場合は得点を表示して終了
|
|
||||||
puts point
|
puts point
|
||||||
elsif frames[11] == [10, 0] || frames[9] == [10, 0]
|
|
||||||
point -= frames[11].first # 計算結果から余剰加点を除外して得点表示
|
|
||||||
puts point
|
|
||||||
end
|
|
||||||
|
|
9
testbowl.sh
Executable file
9
testbowl.sh
Executable file
|
@ -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
|
Loading…
Reference in a new issue