« on: January 01, 2024, 09:54:51 AM »
Looks like F#
> int[] ints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
> ints[3..]
int[7] { 3, 4, 5, 6, 7, 8, 9 }
> ints[..4]
int[4] { 0, 1, 2, 3 }
> ints[..^2]
int[8] { 0, 1, 2, 3, 4, 5, 6, 7 }
Goodbye Substring() method...
> string str = "abcdef";
> str[3..]
"def"
> str[..^1]
"abcde"
> str[2..^2]
"cd"
Merge Sort with
Span<T> structure.
static Span<T> MergeSort<T>(Span<T> span) where T : IComparable<T>
{
if (span.Length <= 1)
return span;
int middle = span.Length / 2;
return Merge(MergeSort(span[..middle]), MergeSort(span[middle..]));
}
static Span<T> Merge<T>(Span<T> left, Span<T> right) where T : IComparable<T>
{
int n = left.Length, m = right.Length, i = 0, j = 0, k = 0;
var result
= new T
[n
+ m
]; while (k < result.Length)
{
result[k++] = (i == n, j == m) switch
{
(true, _) => right[j++],
(_, true) => left[i++],
_ => left[i].CompareTo(right[j]) <= 0 ? left[i++] : right[j++]
};
}
return result;
}
> List<int> unsorted = [6, 7, 9, 1, 8, 3, 5, 0, 4, 2];
> List<int> sorted = [.. MergeSort([.. unsorted])];
> sorted
List<int>(10) { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
« Last Edit: January 02, 2024, 03:20:52 AM by gile »
Logged
Speaking English as a French Frog