2017 Day 10 Part 1
This commit is contained in:
parent
84403086cc
commit
63a14f13f9
1 changed files with 31 additions and 0 deletions
31
2017/day10.py
Normal file
31
2017/day10.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
with open("input/day10.txt") as f:
|
||||
size, input = 256, f.read().strip()
|
||||
|
||||
lengths = [int(i) for i in input.split(",")]
|
||||
|
||||
ring = list(range(size))
|
||||
pos = 0
|
||||
skip = 0
|
||||
|
||||
for length in lengths:
|
||||
assert length <= len(ring), "overlap undefined"
|
||||
|
||||
tail = min(length, len(ring) - pos)
|
||||
head = max(length - tail, 0)
|
||||
|
||||
a = pos + tail
|
||||
b = 0 + head
|
||||
|
||||
prefix = ring[b:pos]
|
||||
inside = ring[pos:a] + ring[:b]
|
||||
suffix = ring[a:]
|
||||
|
||||
assert length == len(inside)
|
||||
|
||||
twisted = inside[::-1]
|
||||
|
||||
ring = twisted[tail:] + prefix + twisted[:tail] + suffix
|
||||
pos = (pos + length + skip) % len(ring)
|
||||
skip += 1
|
||||
|
||||
print(ring[0] * ring[1])
|
||||
Loading…
Reference in a new issue