From 63a14f13f90c2550c0cbaaf5a14a202b3f6a5c29 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Fri, 31 Jul 2026 13:00:03 -0400 Subject: [PATCH] 2017 Day 10 Part 1 --- 2017/day10.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 2017/day10.py diff --git a/2017/day10.py b/2017/day10.py new file mode 100644 index 0000000..95c973c --- /dev/null +++ b/2017/day10.py @@ -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])