[py] Port 2017_05

This commit is contained in:
Joscha 2022-12-06 19:42:20 +01:00
parent 0bf180482b
commit 6712417f6a
4 changed files with 52 additions and 62 deletions

View file

@ -1,56 +0,0 @@
import sys
# PART 1
def load_jumps(filename):
jumps = []
with open(filename, "r") as f:
for line in f:
jumps.append(int(line[:-1]))
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 main(filename):
jumps = load_jumps(filename)
print("Previously calculated")
print("Part 1: 343467")
print("Part 2: 24774780")
print(f"Solutions for {filename}")
steps = perform_jumps(jumps)
print(f"Part 1: {steps}")
steps_2 = perform_jumps_2(jumps)
print(f"Part 2: {steps_2}")
if __name__ == "__main__":
for filename in sys.argv[1:]:
main(filename)

View file

@ -1,5 +0,0 @@
0
3
0
1
-3

View file

@ -2,7 +2,7 @@ import sys
import argparse
from pathlib import Path
from .y2017 import d01, d02, d03, d04
from .y2017 import d01, d02, d03, d04, d05
from .y2018 import d01, d02, d03, d04, d05, d06, d07, d08, d09, d10, d11
from .y2020 import d10
from .y2021 import d14
@ -13,6 +13,7 @@ DAYS = {
"2017_02": y2017.d02.solve,
"2017_03": y2017.d03.solve,
"2017_04": y2017.d04.solve,
"2017_05": y2017.d05.solve,
"2018_01": y2018.d01.solve,
"2018_02": y2018.d02.solve,
"2018_03": y2018.d03.solve,

50
py/aoc/y2017/d05.py Normal file
View file

@ -0,0 +1,50 @@
# 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}")