+8
-2
2025/5/gleam/src/main.gleam
+8
-2
2025/5/gleam/src/main.gleam
···
68
// int.compare(range.0, seen_range.1),
69
// int.compare(range.1, seen_range.0),
70
// )
71
case
72
int.compare(range.0, seen_range.0),
73
int.compare(range.1, seen_range.1),
74
int.compare(range.0, seen_range.1),
75
int.compare(range.1, seen_range.0)
76
{
77
Gt, Gt, Gt, Gt | Lt, Lt, Lt, Lt -> #(range, seen_ranges)
78
-
Eq, Eq, _, _ | Gt, Lt, _, _ | Eq, Lt, _, _ | Gt, Eq, _, _ -> #(
79
#(0, 0),
80
seen_ranges,
81
)
82
-
Eq, Gt, _, _ | Lt, Eq, _, _ | Lt, Gt, _, _ -> #(
83
range,
84
set.delete(seen_ranges, seen_range),
85
)
86
Lt, Lt, _, _ -> #(
87
#(range.0, seen_range.1),
88
set.delete(seen_ranges, seen_range),
89
)
90
Gt, Gt, _, _ -> #(
91
#(seen_range.0, range.1),
92
set.delete(seen_ranges, seen_range),
···
68
// int.compare(range.0, seen_range.1),
69
// int.compare(range.1, seen_range.0),
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
72
case
73
int.compare(range.0, seen_range.0),
74
int.compare(range.1, seen_range.1),
75
int.compare(range.0, seen_range.1),
76
int.compare(range.1, seen_range.0)
77
{
78
+
// if there's no touching
79
Gt, Gt, Gt, Gt | Lt, Lt, Lt, Lt -> #(range, seen_ranges)
80
+
// if it's inside of the other one
81
+
Gt, Lt, _, _ | Eq, Lt, _, _ | Gt, Eq, _, _ | Eq, Eq, _, _ -> #(
82
#(0, 0),
83
seen_ranges,
84
)
85
+
// if the other one is inside it
86
+
Lt, Gt, _, _ | Eq, Gt, _, _ | Lt, Eq, _, _ -> #(
87
range,
88
set.delete(seen_ranges, seen_range),
89
)
90
+
// if it's touching on the left side make them touch
91
Lt, Lt, _, _ -> #(
92
#(range.0, seen_range.1),
93
set.delete(seen_ranges, seen_range),
94
)
95
+
// if it's touching on the right size make them touch
96
Gt, Gt, _, _ -> #(
97
#(seen_range.0, range.1),
98
set.delete(seen_ranges, seen_range),