+8
-2
2025/5/gleam/src/main.gleam
+8
-2
2025/5/gleam/src/main.gleam
···
68
68
// int.compare(range.0, seen_range.1),
69
69
// int.compare(range.1, seen_range.0),
70
70
// )
71
+
// btw im refusing to ever do something better than this idc about your sorting and whatever this is the way shut the fuck up i spent three hours on this i will be using it
71
72
case
72
73
int.compare(range.0, seen_range.0),
73
74
int.compare(range.1, seen_range.1),
74
75
int.compare(range.0, seen_range.1),
75
76
int.compare(range.1, seen_range.0)
76
77
{
78
+
// if there's no touching
77
79
Gt, Gt, Gt, Gt | Lt, Lt, Lt, Lt -> #(range, seen_ranges)
78
-
Eq, Eq, _, _ | Gt, Lt, _, _ | Eq, Lt, _, _ | Gt, Eq, _, _ -> #(
80
+
// if it's inside of the other one
81
+
Gt, Lt, _, _ | Eq, Lt, _, _ | Gt, Eq, _, _ | Eq, Eq, _, _ -> #(
79
82
#(0, 0),
80
83
seen_ranges,
81
84
)
82
-
Eq, Gt, _, _ | Lt, Eq, _, _ | Lt, Gt, _, _ -> #(
85
+
// if the other one is inside it
86
+
Lt, Gt, _, _ | Eq, Gt, _, _ | Lt, Eq, _, _ -> #(
83
87
range,
84
88
set.delete(seen_ranges, seen_range),
85
89
)
90
+
// if it's touching on the left side make them touch
86
91
Lt, Lt, _, _ -> #(
87
92
#(range.0, seen_range.1),
88
93
set.delete(seen_ranges, seen_range),
89
94
)
95
+
// if it's touching on the right size make them touch
90
96
Gt, Gt, _, _ -> #(
91
97
#(seen_range.0, range.1),
92
98
set.delete(seen_ranges, seen_range),