Files
aocpy/2017/d17.py
2024-05-29 02:35:48 -04:00

40 lines
769 B
Python

def part_1(data):
target = 2017
steps = int(data)
xs = [0]
i = 0
for n in range(1, target + 1):
i = (i + steps) % len(xs)
xs.insert(i + 1, n)
i += 1
for j in range(len(xs)):
if xs[j] == target:
print(xs[j + 1])
return
def part_2(data, m=50_000_000):
steps = int(data)
len_xs = 1
last_zero = None
i = 0
for n in range(1, m + 1):
i = (i + steps) % len_xs
if i == 0:
last_zero = n
len_xs += 1
i += 1
return last_zero
def main():
data = open(0).read().strip()
part_1(data)
assert part_2(data, 1000) == 531
assert part_2(data, 10000) == 2616
print(part_2(data))
if __name__ == "__main__":
main()