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