From 72d6fa5be9367b944aa67c7697bd40683f9bf364 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Fri, 16 Dec 2016 08:08:34 -0800 Subject: [PATCH] [2016][ruby][16.0] --- 2016/ruby/day_16.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2016/ruby/day_16.rb 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)