Added AOC 2017 day 08 - 10
This commit is contained in:
45
www/statics/aoc/2017/10_solution-2.py
Normal file
45
www/statics/aoc/2017/10_solution-2.py
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import aoc
|
||||
|
||||
def twist(nums: list, nstart: int, nlen: int):
|
||||
sublist = list()
|
||||
for i in range(0, nlen):
|
||||
sublist.append(nums[(i+nstart) % len(nums)])
|
||||
for i in range(0, nlen):
|
||||
nums[(i+nstart) % len(nums)] = sublist[nlen-i-1]
|
||||
|
||||
|
||||
rawinput = aoc.read_input(10).strip()
|
||||
|
||||
inputlengths = list(map(lambda x: ord(x), rawinput))
|
||||
inputlengths.append(17)
|
||||
inputlengths.append(31)
|
||||
inputlengths.append(73)
|
||||
inputlengths.append(47)
|
||||
inputlengths.append(23)
|
||||
|
||||
numberslist = list(range(0, 256))
|
||||
|
||||
currpos = 0
|
||||
skipsize = 0
|
||||
for iround in range(0,64):
|
||||
for ilen in inputlengths:
|
||||
twist(numberslist, currpos, ilen)
|
||||
currpos = (currpos + ilen + skipsize) % len(numberslist)
|
||||
skipsize += 1
|
||||
|
||||
densehash = list()
|
||||
|
||||
for i1 in range(0, 16):
|
||||
xor = 0
|
||||
for i2 in range(0, 16):
|
||||
xor = xor ^ numberslist[i1*16 + i2]
|
||||
densehash.append(xor)
|
||||
|
||||
hex = "".join(map(lambda n: "%0.2x" % n, densehash))
|
||||
|
||||
print(hex)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user