aboutsummaryrefslogtreecommitdiff
path: root/aoc-2019-elixir/lib/day01.ex
diff options
context:
space:
mode:
Diffstat (limited to 'aoc-2019-elixir/lib/day01.ex')
-rw-r--r--aoc-2019-elixir/lib/day01.ex32
1 files changed, 32 insertions, 0 deletions
diff --git a/aoc-2019-elixir/lib/day01.ex b/aoc-2019-elixir/lib/day01.ex
new file mode 100644
index 0000000..6545f19
--- /dev/null
+++ b/aoc-2019-elixir/lib/day01.ex
@@ -0,0 +1,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()