Powered by AppSignal & Oban Pro

Advent of code - Day 1

day_1.livemd

Advent of code - Day 1

Méthode 1

l =
  File.read!("inputs/day1.txt")
  |> String.trim()
  |> String.split("\n\n")
  |> Enum.map(fn s ->
    String.split(s, "\n")
    |> Enum.map(&String.to_integer/1)
    |> Enum.sum()
  end)
Enum.max(l)
l
|> Enum.sort()
|> Enum.take(-3)
|> Enum.sum()

Methode 2

File.read!("inputs/day1.txt")
|> String.split("\n")
|> Enum.reduce(%{m: 0, c: 0}, fn
  "", %{m: m, c: c} when m < c -> %{m: c, c: 0}
  "", acc -> Map.put(acc, :c, 0)
  x, acc -> Map.update!(acc, :c, &amp;(&amp;1 + String.to_integer(x)))
end)
|> Map.get(:m)
File.read!("inputs/day1.txt")
|> String.split("\n")
|> Enum.reduce(%{m: [], c: 0}, fn
  "", %{m: m, c: c} -> %{m: [c | m] |> Enum.sort() |> Enum.take(-3), c: 0}
  x, acc -> Map.update!(acc, :c, &amp;(&amp;1 + String.to_integer(x)))
end)
|> Map.get(:m)
|> Enum.sum()