Skip to content

Instantly share code, notes, and snippets.

@brettsanders
Created September 16, 2013 17:42
Show Gist options
  • Save brettsanders/6583974 to your computer and use it in GitHub Desktop.
Save brettsanders/6583974 to your computer and use it in GitHub Desktop.
############################
# 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