31 lines
643 B
Python
31 lines
643 B
Python
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])
|