Skip to content

Instantly share code, notes, and snippets.

@aborg0
Created September 6, 2011 14:42
Show Gist options
  • Save aborg0/1197724 to your computer and use it in GitHub Desktop.
Save aborg0/1197724 to your computer and use it in GitHub Desktop.
Ruby submission for Bowling code completion of Gild 2011
#!/usr/bin/ruby
# X = 88, 0 = 48, 9 = 57, / = 47
File.foreach(ARGV[0]) do |line|
ret = 0
prev = 0
pos = 0
(line.rstrip << " 0 0").bytes.select{|c| c!=32}.each_cons(3) {
|c, n, nn| #current, next, nextnext
if c >=48 && c < 58 #number
ret += prev = c - 48
pos += 1 #half increment
elsif c == 47 #slash
if n == 88
ret += 20 - prev
else
ret += n - 38 - prev
end
pos += 1 #half increment
else #X
#print "pos: <#{pos}>"
# if n == 88
# ret += 20
# elsif nn == 47
# ret += 20
# else
# ret += n - 38
# end
# if nn == 88
# ret += 10
# elsif nn != 47 #nn is number
# ret += nn - 48
# end
ret += 10
if n == 88
ret += 10
elsif nn == 47
ret += 10
else
ret += n - 48
end
if nn == 88
ret += 10
elsif nn == 47 #nn is /
ret += 0
else
ret += nn - 48
end
pos += 2 #full increment
end
if pos >= 20
break
end
}
puts ret
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment