Powered by AppSignal & Oban Pro

Advent of code - Day 4

day_4.livemd

Advent of code - Day 4

Section

inputs =
  File.read!("inputs/day4.txt")
  |> String.trim()
  |> String.split("\n")
  |> Enum.map(fn v ->
    Regex.run(~r/(\d+)-(\d+),(\d+)-(\d+)/, v)
    |> Enum.slice(1..-1)
    |> Enum.map(&String.to_integer/1)
  end)

Partie 1

inputs
|> Enum.count(fn [r11, r12, r21, r22] ->
  MapSet.difference(
    MapSet.new(r11..r12),
    MapSet.new(r21..r22)
  )
  |> MapSet.size() == 0 ||
    MapSet.difference(
      MapSet.new(r21..r22),
      MapSet.new(r11..r12)
    )
    |> MapSet.size() == 0
end)

Partie 2

inputs
|> Enum.count(fn [r11, r12, r21, r22] ->
  !MapSet.disjoint?(
    MapSet.new(r11..r12),
    MapSet.new(r21..r22)
  )
end)