my solutions to advent of code
aoc advent-of-code

someone should kill me for this day 5 2025

aylac.top 6c926fcb 1185346f

verified
Changed files
+16 -20
2025
5
gleam
+16 -20
2025/5/gleam/src/main.gleam
···
fresh_ranges
|> string.trim
|> string.split("\n")
-
|> list.reverse
-
|> list.drop(5)
-
|> list.take(12)
-
|> list.reverse
+
// |> list.reverse
+
// |> list.drop(5)
+
// |> list.take(12)
+
// |> list.reverse
|> list.map(fn(i) {
let assert [from, to] = i |> string.trim |> string.split("-")
let assert Ok(from) = int.parse(from)
let assert Ok(to) = int.parse(to)
-
#(from / 100_000_000, to / 100_000_000)
-
// #(from, to)
+
// #(from / 100_000_000, to / 100_000_000)
+
#(from, to)
})
let available =
available
···
prev_seen_ranges
|> set.fold(#(range, prev_seen_ranges), fn(acc, seen_range) {
let #(range, seen_ranges) = acc
-
echo #(
-
range,
-
seen_range,
-
int.compare(range.0, seen_range.0),
-
int.compare(range.1, seen_range.1),
-
int.compare(range.0, seen_range.1),
-
int.compare(range.1, seen_range.0),
-
)
+
// echo #(
+
// range,
+
// seen_range,
+
// int.compare(range.0, seen_range.0),
+
// int.compare(range.1, seen_range.1),
+
// int.compare(range.0, seen_range.1),
+
// int.compare(range.1, seen_range.0),
+
// )
case
int.compare(range.0, seen_range.0),
int.compare(range.1, seen_range.1),
···
#(range.0, seen_range.1),
set.delete(seen_ranges, seen_range),
)
-
Gt, Gt, Lt, Gt -> #(
+
Gt, Gt, Lt, Gt | Gt, Gt, Eq, Gt -> #(
#(seen_range.0, range.1),
-
set.delete(seen_ranges, seen_range),
-
)
-
Gt, Gt, Eq, Gt -> #(
-
#(seen_range.0, range.0),
set.delete(seen_ranges, seen_range),
)
_, _, _, _ -> #(range, seen_ranges)
···
True -> seen_ranges
}
})
-
echo ranges
+
// echo ranges
ranges
|> set.fold(0, fn(acc, range) { acc + range.1 - range.0 + 1 })
|> int.to_string