Powered by AppSignal & Oban Pro

Day 4

2022/elixir_2022/day_04.livemd

Day 4

Mix.install([
  {:kino, "~> 0.7.0"}
])

Input

input = Kino.Input.textarea("Please paste your input file:")

Helpers

Part 1

input
|> Kino.Input.read()
|> String.splitter("\n")
|> Enum.filter(fn line ->
  [first, second] = String.split(line, ",")

  [e1_start, e1_finish] = String.split(first, "-") |> Enum.map(&String.to_integer/1)
  [e2_start, e2_finish] = String.split(second, "-") |> Enum.map(&String.to_integer/1)

  (e1_start >= e2_start &amp;&amp; e1_finish <= e2_finish) ||
    (e2_start >= e1_start &amp;&amp; e2_finish <= e1_finish)
end)
|> Enum.count()

Part 2

input
|> Kino.Input.read()
|> String.splitter("\n")
|> Enum.filter(fn line ->
  [first, second] = String.split(line, ",")

  [e1_start, e1_finish] = String.split(first, "-") |> Enum.map(&amp;String.to_integer/1)
  [e2_start, e2_finish] = String.split(second, "-") |> Enum.map(&amp;String.to_integer/1)

  (e1_start <= e2_start &amp;&amp; e1_finish >= e2_start) ||
    (e2_start <= e1_start &amp;&amp; e2_finish >= e1_start)
end)
|> Enum.count()