50 lines
881 B
Python
50 lines
881 B
Python
# PART 1
|
|
|
|
|
|
def load_jumps(inputstr):
|
|
jumps = []
|
|
for line in inputstr.splitlines():
|
|
jumps.append(int(line))
|
|
return jumps
|
|
|
|
|
|
def perform_jumps(jumps):
|
|
jumps = jumps.copy()
|
|
pos = 0
|
|
steps = 0
|
|
|
|
while 0 <= pos < len(jumps):
|
|
next_pos = pos + jumps[pos]
|
|
jumps[pos] += 1
|
|
pos = next_pos
|
|
steps += 1
|
|
|
|
return steps
|
|
|
|
|
|
# PART 2
|
|
|
|
|
|
def perform_jumps_2(jumps):
|
|
jumps = jumps.copy()
|
|
pos = 0
|
|
steps = 0
|
|
|
|
while 0 <= pos < len(jumps):
|
|
next_pos = pos + jumps[pos]
|
|
if jumps[pos] >= 3:
|
|
jumps[pos] -= 1
|
|
else:
|
|
jumps[pos] += 1
|
|
pos = next_pos
|
|
steps += 1
|
|
|
|
return steps
|
|
|
|
|
|
def solve(inputstr):
|
|
jumps = load_jumps(inputstr)
|
|
steps = perform_jumps(jumps)
|
|
print(f"Part 1: {steps}")
|
|
steps_2 = perform_jumps_2(jumps)
|
|
print(f"Part 2: {steps_2}")
|