Added 2017/10 part 2
This commit is contained in:
parent
adea09622c
commit
a3a7d201b3
@ -89,8 +89,6 @@ first two numbers in the list*?
|
|||||||
|
|
||||||
Your puzzle answer was `19591`.
|
Your puzzle answer was `19591`.
|
||||||
|
|
||||||
The first half of this puzzle is complete! It provides one gold star: \*
|
|
||||||
|
|
||||||
## \-\-- Part Two \-\-- {#part2}
|
## \-\-- Part Two \-\-- {#part2}
|
||||||
|
|
||||||
The logic you\'ve constructed forms a single *round* of the *Knot Hash*
|
The logic you\'ve constructed forms a single *round* of the *Knot Hash*
|
||||||
@ -163,7 +161,13 @@ Treating your puzzle input as a string of ASCII characters, *what is the
|
|||||||
Knot Hash of your puzzle input?* Ignore any leading or trailing
|
Knot Hash of your puzzle input?* Ignore any leading or trailing
|
||||||
whitespace you might encounter.
|
whitespace you might encounter.
|
||||||
|
|
||||||
Answer:
|
Your puzzle answer was `62e2204d2ca4f4924f6e7a80f1288786`.
|
||||||
|
|
||||||
Although it hasn\'t changed, you can still [get your puzzle
|
Both parts of this puzzle are complete! They provide two gold stars:
|
||||||
|
\*\*
|
||||||
|
|
||||||
|
At this point, you should [return to your Advent calendar](/2017) and
|
||||||
|
try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can [get your puzzle
|
||||||
input](10/input).
|
input](10/input).
|
||||||
|
@ -1,13 +1,23 @@
|
|||||||
#!/bin/python3
|
#!/bin/python3
|
||||||
import sys,re
|
import sys,re
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
from functools import reduce
|
||||||
|
from operator import xor
|
||||||
|
|
||||||
input_f = 'input'
|
input_f = 'input'
|
||||||
|
|
||||||
def list2int(x):
|
def list2int(x):
|
||||||
return list(map(int, x))
|
return list(map(int, x))
|
||||||
|
|
||||||
part = 1
|
def toACSII(x):
|
||||||
|
for idx,i in enumerate(x):
|
||||||
|
x[idx] = ord(i)
|
||||||
|
return x
|
||||||
|
|
||||||
|
def XOR(x):
|
||||||
|
return reduce(xor, map(int, t))
|
||||||
|
|
||||||
|
part = 2
|
||||||
#########################################
|
#########################################
|
||||||
# #
|
# #
|
||||||
# Part 1 #
|
# Part 1 #
|
||||||
@ -46,4 +56,42 @@ if part == 1:
|
|||||||
# #
|
# #
|
||||||
#########################################
|
#########################################
|
||||||
if part == 2:
|
if part == 2:
|
||||||
exit()
|
|
||||||
|
size = 256
|
||||||
|
lengths = []
|
||||||
|
skip = 0
|
||||||
|
numbers = []
|
||||||
|
pos = 0
|
||||||
|
for i in range(0,size):
|
||||||
|
numbers.append(i)
|
||||||
|
|
||||||
|
|
||||||
|
with open(input_f) as file:
|
||||||
|
for line in file:
|
||||||
|
lengths = list(line.rsplit()[0].split()[0])
|
||||||
|
lengths = toACSII(lengths) + [17, 31, 73, 47, 23]
|
||||||
|
print(lengths)
|
||||||
|
|
||||||
|
for i in range(0,64):
|
||||||
|
for ldx, length in enumerate(lengths):
|
||||||
|
sub = [numbers[(pos + i) % len(numbers)] for i in range(length)]
|
||||||
|
rev = sub[::-1]
|
||||||
|
|
||||||
|
for i in range(length):
|
||||||
|
numbers[(pos + i) % len(numbers)] = rev[i]
|
||||||
|
|
||||||
|
pos += (length+skip)
|
||||||
|
pos = pos % len(numbers)
|
||||||
|
skip += 1
|
||||||
|
print(numbers)
|
||||||
|
|
||||||
|
dense = []
|
||||||
|
|
||||||
|
for i in range(0,16):
|
||||||
|
t = numbers[i*16:(i*16)+16]
|
||||||
|
dense.append(XOR(t))
|
||||||
|
|
||||||
|
|
||||||
|
for i in dense:
|
||||||
|
print(format(i, '02x'),end='')
|
||||||
|
print()
|
||||||
|
1
2017/10/test2
Normal file
1
2017/10/test2
Normal file
@ -0,0 +1 @@
|
|||||||
|
1,2,3
|
1
2017/10/test3
Normal file
1
2017/10/test3
Normal file
@ -0,0 +1 @@
|
|||||||
|
1,2,4
|
Loading…
Reference in New Issue
Block a user