Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

AoC2021 Day1

day01.livemd

AoC2021 Day1

Part1

Mix.install([
  {:httpoison, "~> 1.8"},
  {:jason, "~> 1.2"}
])
HTTPoison.start()

%HTTPoison.Response{status_code: 200, body: raw_input} =
  HTTPoison.get!("https://raw.githubusercontent.com/redmar/aoc2021/main/inputs/day1.txt")

:ok
cleaned_input =
  raw_input
  |> String.split("\n")
  |> Enum.reject(fn x -> x == "" end)
  |> Enum.map(&String.to_integer/1)

# IO.inspect cleaned_input

# --- part 1

part1 =
  cleaned_input
  |> Enum.chunk_every(2, 1, :discard)
  |> Enum.count(fn [prev, next] -> next > prev end)

IO.puts("solution part 1 = #{part1}")

# --- part 2

part2 =
  cleaned_input
  |> Enum.chunk_every(3, 1, :discard)
  |> Enum.map(&Enum.sum/1)
  |> Enum.chunk_every(2, 1, :discard)
  |> Enum.count(fn [prev, next] -> next > prev end)

IO.puts("solution part 2 = #{part2}")