[Python/2017] Move solutions into .py files
This commit is contained in:
parent
fbc5fda60f
commit
7b1efc0d9c
51 changed files with 1100 additions and 4546 deletions
55
Python/2017/10.py
Normal file
55
Python/2017/10.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
from lib import *
|
||||
|
||||
input = read_input(2017, 10).strip()
|
||||
|
||||
|
||||
nums = [*range(256)]
|
||||
pos = 0
|
||||
skip = 0
|
||||
|
||||
|
||||
def rev(a, b):
|
||||
a %= len(nums)
|
||||
b = (b - a) % len(nums)
|
||||
nums[:] = nums[a:] + nums[:a]
|
||||
nums[:b] = nums[:b][::-1]
|
||||
nums[:] = nums[-a:] + nums[:-a]
|
||||
|
||||
|
||||
for length in map(int, input.split(",")):
|
||||
rev(pos, pos + length)
|
||||
pos += length + skip
|
||||
skip += 1
|
||||
|
||||
print(nums[0] * nums[1])
|
||||
|
||||
|
||||
lengths = [*map(ord, input), 17, 31, 73, 47, 23]
|
||||
nums = [*range(256)]
|
||||
pos = 0
|
||||
skip = 0
|
||||
|
||||
|
||||
def rev(a, b):
|
||||
a %= len(nums)
|
||||
b = (b - a) % len(nums)
|
||||
nums[:] = nums[a:] + nums[:a]
|
||||
nums[:b] = nums[:b][::-1]
|
||||
nums[:] = nums[-a:] + nums[:-a]
|
||||
|
||||
|
||||
for _ in range(64):
|
||||
for length in lengths:
|
||||
rev(pos, pos + length)
|
||||
pos += length + skip
|
||||
skip += 1
|
||||
|
||||
dense = []
|
||||
for i in range(16):
|
||||
x = 0
|
||||
for j in range(16):
|
||||
x ^= nums[i * 16 + j]
|
||||
|
||||
dense.append(x)
|
||||
|
||||
print("".join(f"{x:02x}" for x in dense))
|
Loading…
Add table
Add a link
Reference in a new issue