From 29c49417f89169c03ca05724da3c88880d3a1a17 Mon Sep 17 00:00:00 2001 From: Tomasz Chojnacki Date: Fri, 27 Jan 2023 15:00:57 +0100 Subject: Solve first two days of 2019 in Elixir --- aoc-2019-elixir/lib/day01.ex | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 aoc-2019-elixir/lib/day01.ex (limited to 'aoc-2019-elixir/lib/day01.ex') 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() -- cgit v1.2.3