Created
September 16, 2013 17:42
-
-
Save brettsanders/6583974 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################ | |
# INPUT | |
############################ | |
# array | |
rolls = "6 2 7 1 10 9 0 8 2 10 10 3 5 7 2 5 5 8 0".split(" ").map{|num| num.to_i} | |
############################ | |
# PROCESS data_for_display | |
############################ | |
game_data = [] | |
frame = 1 | |
i = 0 | |
scores = [] | |
score = 0 | |
while i < rolls.size | |
# strike | |
if rolls[i] == 10 | |
score += (10 + rolls[i+1] + rolls[i+2]) | |
roll_1 = 10 | |
roll_2 = nil | |
i += 1 | |
# spare | |
elsif ((rolls[i] + rolls[i+1]) == 10) | |
score += (10 + rolls[i+2]) | |
roll_1 = rolls[i] | |
roll_2 = rolls[i+1] | |
i += 2 | |
# regular | |
else | |
score += (rolls[i] + rolls[i+1]) | |
roll_1 = rolls[i] | |
roll_2 = rolls[i+1] | |
i += 2 | |
end | |
game_data << [frame, roll_1, roll_2, score] | |
frame += 1 | |
end | |
############################ | |
# FORMAT | |
############################ | |
headers = ["Frame", "Roll_1", "Roll_2", "Score"] | |
data_for_display = game_data.unshift(headers) | |
def mark_strikes_with_x(frame) | |
if frame[1] == 10 | |
frame[1] = "X" | |
end | |
end | |
def nilless_frame?(frame) | |
frame[1] && frame[2] != nil ? true : false | |
end | |
def spare?(frame) | |
((frame[1] + frame[2]) == 10) ? true : false | |
end | |
def mark_spares_with_slash(frame) | |
if nilless_frame?(frame) | |
if spare?(frame) | |
frame[2] = "/" | |
end | |
end | |
end | |
def replace_zeros_with_dashes(frame) | |
if frame[1] == 0 | |
frame[1] = "-" | |
elsif frame[2] == 0 | |
frame[2] = "-" | |
end | |
end | |
def frame_11?(frame) | |
frame[0] == 11 ? true : false | |
end | |
def format_frame_11(frame) | |
frame[0] = '*' | |
frame[2] = nil | |
frame[3] = nil | |
end | |
data_for_display.each do |frame| | |
mark_strikes_with_x(frame) | |
mark_spares_with_slash(frame) | |
replace_zeros_with_dashes(frame) | |
format_frame_11(frame) if frame_11?(frame) | |
puts frame.map{|cell| cell.to_s.ljust(10) }.join('') | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment