Allow <= and >= as overloadable operators and add in a string <= function (though some refactoring to do <, >, and => would be good) and a sorted to vec
This commit is contained in:
@@ -357,5 +357,28 @@ obj vec<T> (Object, Serializable) {
|
||||
initial = func(data[i], initial)
|
||||
return initial
|
||||
}
|
||||
fun sorted<U>(less_than: run(ref U, ref U): bool): vec<T> {
|
||||
if size < 2 {
|
||||
return *this
|
||||
} else {
|
||||
var left = slice(0, size/2).sorted(less_than)
|
||||
var right = slice(size/2, -1).sorted(less_than)
|
||||
var to_ret.construct(size): vec<T>
|
||||
var l = 0
|
||||
var r = 0
|
||||
while (l < left.size || r < right.size) {
|
||||
if l == left.size {
|
||||
to_ret.add(right[r++])
|
||||
} else if r == right.size {
|
||||
to_ret.add(left[l++])
|
||||
} else if less_than(left[l], right[r]) {
|
||||
to_ret.add(left[l++])
|
||||
} else {
|
||||
to_ret.add(right[r++])
|
||||
}
|
||||
}
|
||||
return to_ret
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user