blob: 6545f19b47d0527a5af3f706e2943d126fa57189 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
defmodule Day01 do
@spec part1([integer]) :: integer
def part1(input) do
input
|> Enum.map(&naive_fuel_requirement/1)
|> Enum.sum()
end
@spec part2([integer]) :: integer
def part2(input) do
input
|> Enum.map(&recursive_fuel_requirement/1)
|> Enum.sum()
end
defp naive_fuel_requirement(mass) do
div(mass, 3) - 2
end
defp recursive_fuel_requirement(mass) do
fuel_mass = div(mass, 3) - 2
case fuel_mass do
n when n <= 0 -> 0
_ -> fuel_mass + recursive_fuel_requirement(fuel_mass)
end
end
end
input = Util.Input.read_numbers("day01")
input |> Day01.part1() |> IO.inspect()
input |> Day01.part2() |> IO.inspect()
|