From 2c684db89ef582ddfae31a577f5b151e5bf6c18a Mon Sep 17 00:00:00 2001 From: Kevin Yap Date: Thu, 15 Dec 2016 21:22:28 -0800 Subject: [PATCH] Add solution for 2016/16 --- 2016/day16.py | 34 ++++++++++++++++++++++++++++++++++ 2016/input16.txt | 1 + 2 files changed, 35 insertions(+) create mode 100644 2016/day16.py create mode 100644 2016/input16.txt diff --git a/2016/day16.py b/2016/day16.py new file mode 100644 index 0000000..815d5d3 --- /dev/null +++ b/2016/day16.py @@ -0,0 +1,34 @@ +import fileinput + + +def generate_data(data, size): + def dragon(a): + b = ''.join('1' if c == '0' else '0' for c in a) + return a + '0' + b[::-1] + + while len(data) < size: + data = dragon(data) + + return data[:size] + + +def checksum(s): + def checksum_iteration(s): + tmp = [] + for a, b in zip(s[::2], s[1::2]): + tmp.append('1' if a == b else '0') + + return ''.join(tmp) + + res = checksum_iteration(s) + + while len(res) % 2 == 0: + res = checksum_iteration(res) + + return res + + +if __name__ == '__main__': + data = fileinput.input()[0].strip() + print 'Checksum #1:', checksum(generate_data(data, 272)) + print 'Checksum #2:', checksum(generate_data(data, 35651584)) diff --git a/2016/input16.txt b/2016/input16.txt new file mode 100644 index 0000000..f8492ed --- /dev/null +++ b/2016/input16.txt @@ -0,0 +1 @@ +00101000101111010 -- 2.51.2