[2016][ruby][16.0]
change xtnkmqknytzxomlqtlwltuuxxqmltnqs
commit 07c7ec02e6c6cd1a51c8683babc0694d02a9cfcd
author Alpha Chen <alpha.chen@gmail.com>
date
parent qkqznzwt
diff --git a/2016/ruby/day_16.rb b/2016/ruby/day_16.rb
new file mode 100644
index 0000000..0d87840
--- /dev/null
+++ b/2016/ruby/day_16.rb
@@ -0,0 +1,24 @@
+def step(a)
+  b = a.reverse.tr('10', '01')
+  "#{a}0#{b}"
+end
+
+def checksum(data)
+  checksum = data.chars
+  loop do
+    checksum = checksum.each_slice(2).map {|a,b| (a == b) ??1:?0 }
+    break if checksum.length.odd?
+  end
+  checksum.join
+end
+
+seed = '10001110011110000'
+target_length = 272
+
+state = seed
+while state.length < target_length
+  state = step(state)
+end
+
+data = state[0...target_length]
+puts checksum(data)