This commit is contained in:
bluepython508
2023-12-09 12:03:00 +00:00
parent 3361ad3a79
commit 1655ead021
5 changed files with 35 additions and 1 deletions

28
lib/day9.ex Normal file
View File

@@ -0,0 +1,28 @@
defmodule Aoc2023.Day9 do
use Aoc2023
defp prediction(lst) do
case lst |> Enum.uniq() do
[val] -> val
_ -> List.last(lst) + prediction(Enum.zip_with(lst, Enum.drop(lst, 1), &(&2 - &1)))
end
end
def parse(input) do
input
|> lines
|> Enum.map(pipe(String.split() |> Enum.map(&String.to_integer/1)))
end
def part1(input) do
input
|> Enum.map(&prediction/1)
|> Enum.sum()
end
def part2(input) do
input
|> Enum.map(pipe(Enum.reverse() |> prediction))
|> Enum.sum()
end
end

View File

@@ -10,6 +10,7 @@ defmodule Mix.Tasks.Aoc do
defp module(6), do: Aoc2023.Day6
defp module(7), do: Aoc2023.Day7
defp module(8), do: Aoc2023.Day8
defp module(9), do: Aoc2023.Day9
# [MODULE INSERTION POINT]
defp base_dir(), do: System.get_env("AOC_BASE")

3
tests/day9/1 Normal file
View File

@@ -0,0 +1,3 @@
0 3 6 9 12 15
1 3 6 10 15 21
10 13 16 21 30 45

1
tests/day9/1.1 Normal file
View File

@@ -0,0 +1 @@
114

1
tests/day9/1.2 Normal file
View File

@@ -0,0 +1 @@
2