Solve 2017 day 14 to 17.
This commit is contained in:
39
2017/d17.py
Normal file
39
2017/d17.py
Normal file
@@ -0,0 +1,39 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user