You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
716 B
37 lines
716 B
7 years ago
|
diagram = ARGF.read.split("\n").map(&:chars)
|
||
|
|
||
|
dir = [0, 1]
|
||
|
y = 0
|
||
|
x = diagram[y].index(?|)
|
||
|
|
||
|
begin
|
||
|
steps = 0
|
||
|
loop do
|
||
|
case diagram[y][x]
|
||
|
when ?+
|
||
|
dir = if dir[0] == 0 # going vertically
|
||
|
if (diagram[y][x-1] || " ") != " "
|
||
|
[-1, 0]
|
||
|
else
|
||
|
[1, 0]
|
||
|
end
|
||
|
else # going horizontally
|
||
|
if (diagram[y-1][x] || " ") != " "
|
||
|
[0, -1]
|
||
|
else
|
||
|
[0, 1]
|
||
|
end
|
||
|
end
|
||
|
when /[a-z]/i
|
||
|
# print diagram[y][x]
|
||
|
when /\||\+|-/
|
||
|
else
|
||
|
raise diagram[y][x]
|
||
|
end
|
||
|
x,y = [x,y].zip(dir).map {|a,b| a + b}
|
||
|
steps += 1
|
||
|
end
|
||
|
rescue
|
||
|
puts steps
|
||
|
end
|