[2017][ruby][19.x] speedrun
change lvsxnukqnurpsxottzyqnryzssqmltmx
commit d68741ac04f043b897e749641c11dc77d4351c91
author Alpha Chen <alpha.chen@gmail.com>
date
parent uwszkmym
diff --git a/2017/ruby/day_19.rb b/2017/ruby/day_19.rb
new file mode 100644
index 0000000..3caae1d
--- /dev/null
+++ b/2017/ruby/day_19.rb
@@ -0,0 +1,36 @@
+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