advent-of-code

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 6160d092340668718e1a0d2f6d43fee6086be5d5
parent ef09cc1d5d4c66b3f191bbf82fec1f9199be63ee
Author: mpizzzle <michael.770211@gmail.com>
Date:   Sun, 10 Dec 2017 17:54:34 +0000

puzzle 10 complete

Diffstat:
Mpuzzle10.py | 28+++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/puzzle10.py b/puzzle10.py @@ -1,5 +1,8 @@ with open('files/puzzle10.txt') as f: - puzzle_input = [int(c) for c in f.read().split(',')] + blep = f.read() + puzzle_input = [int(c) for c in blep.split(',')] + puzzle_ascii = [ord(c) for c in blep[:len(blep) - 1]] + puzzle_ascii.extend([17, 31, 73, 47, 23]) my_list = [i for i in range(256)] skip, pos = 0, 0 @@ -12,3 +15,26 @@ for length in puzzle_input: skip += 1 print my_list[0] * my_list[1] + +my_list = [i for i in range(256)] +skip, pos = 0, 0 + +for i in range(64): + for length in puzzle_ascii: + twist = reversed([my_list[i % len(my_list)] for i in range(pos, pos + length)]) + for i, t in zip(range(pos, pos + length), twist): + my_list[i % len(my_list)] = t + pos += length + skip + skip += 1 + +blocks = [my_list[i:i + 16] for i in range(0, len(my_list), 16)] + +knot_hash = [] + +for block in blocks: + value = 0 + for i in block: + value ^= i + knot_hash.append(chr(value)) + +print "".join(knot_hash).encode("hex")