From 49f1283cf6ceb1f307c63a1d6a0f4ab7dc7565e3 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sun, 4 Dec 2022 15:54:30 +1000 Subject: [PATCH] Day 4 part 2 --- 2022/src/days/day_4.gleam | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 + } +}