diff --git a/2022/src/days/day_4.gleam b/2022/src/days/day_4.gleam index c5fdaf7..aecedd3 100644 --- a/2022/src/days/day_4.gleam +++ b/2022/src/days/day_4.gleam @@ -16,7 +16,11 @@ pub fn pt_1(input: String) -> Int { } pub fn pt_2(input: String) -> Int { - todo + string.split(input, on: "\n") + |> iterator.from_list + |> iterator.map(parse_line) + |> iterator.filter(overlaps) + |> iterator.fold(0, fn(sum, _) { sum + 1 }) } fn parse_line(line: String) -> #(Range, Range) { @@ -43,3 +47,12 @@ fn fully_contains(pair: #(Range, Range)) -> Bool { let b = pair.1 b.start >= a.start && b.end <= a.end || a.start >= b.start && a.end <= b.end } + +fn overlaps(pair: #(Range, Range)) -> Bool { + let a = pair.0 + let b = pair.1 + case a.start < b.start { + True -> b.start <= a.end + False -> a.start <= b.end + } +}