feat: add solution 2019/01
This commit is contained in:
0
src/solution/year_2019/__init__.py
Normal file
0
src/solution/year_2019/__init__.py
Normal file
38
src/solution/year_2019/day_01.py
Normal file
38
src/solution/year_2019/day_01.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
def fuel_req(mass: int) -> int:
|
||||||
|
return max(mass // 3 - 2, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def rec_fuel_req(mass: int) -> int:
|
||||||
|
fuel = fuel_req(mass)
|
||||||
|
|
||||||
|
if fuel == 0:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
return fuel + rec_fuel_req(fuel)
|
||||||
|
|
||||||
|
|
||||||
|
def part_1_2(input_data: str) -> Any:
|
||||||
|
req1, req2 = 0, 0
|
||||||
|
|
||||||
|
for line in input_data.splitlines():
|
||||||
|
mass = int(line)
|
||||||
|
req1 += fuel_req(mass)
|
||||||
|
req2 += rec_fuel_req(mass)
|
||||||
|
|
||||||
|
return req1, req2
|
||||||
|
|
||||||
|
|
||||||
|
def test_fuel_req() -> None:
|
||||||
|
assert fuel_req(12) == 2
|
||||||
|
assert fuel_req(14) == 2
|
||||||
|
assert fuel_req(1969) == 654
|
||||||
|
assert fuel_req(100756) == 33583
|
||||||
|
|
||||||
|
|
||||||
|
def test_rec_fuel_req() -> None:
|
||||||
|
assert rec_fuel_req(14) == 2
|
||||||
|
assert rec_fuel_req(1969) == 966
|
||||||
|
assert rec_fuel_req(100756) == 50346
|
||||||
Reference in New Issue
Block a user