[2016][ruby][12.0]
change rypwwwrpyssozrtsrlwrottwzyxmxqpn
commit 5ab045123f45b0a46736bf4c13117797f78f5c92
author Alpha Chen <alpha.chen@gmail.com>
date
parent mxtysvkr
diff --git a/2016/ruby/day_12.rb b/2016/ruby/day_12.rb
new file mode 100644
index 0000000..edaf918
--- /dev/null
+++ b/2016/ruby/day_12.rb
@@ -0,0 +1,28 @@
+registers = Hash[(?a..?d).map {|c| [c, 0] }]
+pc = 0
+data = DATA.each_line.to_a
+
+while pc < data.size
+  line = data[pc]
+  case line
+  when /cpy ([a-d]|\d+) ([a-d])/
+    value = registers.fetch($1) { $1.to_i }
+    registers[$2] = value
+    pc += 1
+  when /inc ([a-d])/
+    registers[$1] += 1
+    pc += 1
+  when /dec ([a-d])/
+    registers[$1] -= 1
+    pc += 1
+  when /jnz ([a-d]|\d+) (-?\d+)/
+    value = registers.fetch($1) { $1.to_i }
+    pc += value.zero? ? 1 : $2.to_i
+  else
+    raise "invalid line: #{line}"
+  end
+end
+
+p registers
+
+__END__