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)