Day 4: Camp Cleanup
Mix.install([:kino])
input = Kino.Input.textarea("Please paste your input:")
Part 1
https://adventofcode.com/2022/day/4
data =
input
|> Kino.Input.read()
|> String.split("\n", trim: true)
|> Enum.map(&(&1 |> String.split(",")))
|> Enum.map(fn pair ->
pair
|> Enum.map(fn range ->
range
|> String.split("-")
|> Enum.map(fn integer_str -> String.to_integer(integer_str) end)
end)
end)
_answer1 =
data
|> Enum.filter(fn [range0, range1] ->
[{range0, range1}, {range1, range0}]
|> Enum.any?(fn {[start_a, end_a], [start_b, end_b]} ->
start_a >= start_b and end_a <= end_b
end)
end)
|> Enum.count()
Part 2
https://adventofcode.com/2022/day/4#part2
_answer2 =
data
|> Enum.reject(fn [[start_a, end_a], [start_b, end_b]] ->
start_a > end_b or start_b > end_a
end)
|> Enum.count()