Solve 2022 day 1

This commit is contained in:
Gabriel Augendre 2022-12-02 13:42:42 +01:00
parent a1782c4cae
commit cd3e1ecbc5
5 changed files with 2334 additions and 0 deletions

37
2022/day01_calories.py Normal file
View file

@ -0,0 +1,37 @@
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
print(f"\n+ Running on {filename}")
with open(filename) as f:
data = f.read().strip().split("\n\n")
data = parse_data(data)
solution_part_1 = solve_part_1(data)
print(f"1. Found {solution_part_1}")
if expected_part_1:
assert expected_part_1 == solution_part_1
solution_part_2 = solve_part_2(data)
print(f"2. Found {solution_part_2}")
if expected_part_2:
assert expected_part_2 == solution_part_2
def parse_data(data: list[str]) -> list[int]:
split_lines = []
for group in data:
split_lines.append(list(map(int, group.split("\n"))))
sums = [sum(group) for group in split_lines]
return sums
def solve_part_1(data: list[int]) -> int:
return max(data)
def solve_part_2(data: list[int]) -> int:
return sum(sorted(data, reverse=True)[:3])
if __name__ == "__main__":
main("inputs/day01-test1", expected_part_1=24000, expected_part_2=45000)
main("inputs/day01", expected_part_1=70296)

2236
2022/inputs/day01 Normal file

File diff suppressed because it is too large Load diff

14
2022/inputs/day01-test1 Normal file
View file

@ -0,0 +1,14 @@
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000

14
2022/new_day Executable file
View file

@ -0,0 +1,14 @@
#!/bin/bash
set -euxo pipefail
if [[ $# -ne 2 ]]; then
>&2 echo "Usage: $0 <number> <python_module_name>"
exit 2
fi
filename=day$1_$2.py
cp template.py $filename
sed -e "s/dayXX/day$1/g" -i "" ./$filename
mkdir -p inputs
touch inputs/day$1
touch inputs/day$1-test1

33
2022/template.py Normal file
View file

@ -0,0 +1,33 @@
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
print(f"\n+ Running on {filename}")
with open(filename) as f:
data = f.read().strip().split("\n")
data = parse_data(data)
solution_part_1 = solve_part_1(data)
print(f"1. Found {solution_part_1}")
if expected_part_1:
assert expected_part_1 == solution_part_1
solution_part_2 = solve_part_2(data)
print(f"2. Found {solution_part_2}")
if expected_part_2:
assert expected_part_2 == solution_part_2
def parse_data(data: list[str]):
return data
def solve_part_1(data) -> int:
return 0
def solve_part_2(data) -> int:
return 0
if __name__ == "__main__":
main("inputs/dayXX-test1")
main("inputs/dayXX")