This commit is contained in:
2022-12-06 07:14:27 +01:00
commit 97aa78cd76
36 changed files with 7669 additions and 0 deletions

0
day01/__init__.py Normal file
View File

2250
day01/input.txt Normal file

File diff suppressed because it is too large Load Diff

62
day01/part1.py Normal file
View File

@@ -0,0 +1,62 @@
from __future__ import annotations
import argparse
import os.path
import pytest
import support
INPUT_TXT = os.path.join(os.path.dirname(__file__), 'input.txt')
def compute(s: str) -> int:
n = 0
largest = 0
curr = 0
for c in s.split('\n'):
if c.strip() == "":
if curr > largest:
largest = curr
curr = 0
else:
curr += int(c)
return largest
INPUT_S = '''\
1000
2000
5000
1000
4001
'''
EXPECTED = 5001
@pytest.mark.parametrize(
('input_s', 'expected'),
(
(INPUT_S, EXPECTED),
),
)
def test(input_s: str, expected: int) -> None:
assert compute(input_s) == expected
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument('data_file', nargs='?', default=INPUT_TXT)
args = parser.parse_args()
with open(args.data_file) as f, support.timing():
print(compute(f.read()))
return 0
if __name__ == '__main__':
raise SystemExit(main())

61
day01/part2.py Normal file
View File

@@ -0,0 +1,61 @@
from __future__ import annotations
import argparse
import os.path
import pytest
import support
INPUT_TXT = os.path.join(os.path.dirname(__file__), 'input.txt')
def compute(s: str) -> int:
elves_totals = []
curr = 0
for c in s.split('\n'):
if c.strip() == "":
elves_totals.append(curr)
curr = 0
else:
curr += int(c)
sor = sorted(elves_totals)
return sor[-3] + sor[-2] + sor[-1]
INPUT_S = '''\
1000
2000
5000
1000
4001
'''
EXPECTED = 5001
@pytest.mark.parametrize(
('input_s', 'expected'),
(
(INPUT_S, EXPECTED),
),
)
def test(input_s: str, expected: int) -> None:
assert compute(input_s) == expected
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument('data_file', nargs='?', default=INPUT_TXT)
args = parser.parse_args()
with open(args.data_file) as f, support.timing():
print(compute(f.read()))
return 0
if __name__ == '__main__':
raise SystemExit(main())