|
@@ -4,35 +4,36 @@ namespace MinMaxAB;
|
|
|
|
|
|
public static class Extensions
|
|
|
{
|
|
|
- public static T ChooseRandom<T>(this T[] source) => source[Random.Shared.Next(0, source.Length)];
|
|
|
public static Player[][] Fill(int cols, int rows, Player value)
|
|
|
{
|
|
|
Player[][] array = new Player[cols][];
|
|
|
- for (int i = 0; i < cols; i++)
|
|
|
+ var arr = new Player[rows];
|
|
|
+ for (int j = 0; j < rows; j++)
|
|
|
{
|
|
|
- var arr = new Player[rows];
|
|
|
- for (int j = 0; j < rows; j++)
|
|
|
- {
|
|
|
- arr[j] = value;
|
|
|
- }
|
|
|
- array[i] = arr;
|
|
|
+ arr[j] = value;
|
|
|
+ }
|
|
|
+ array[0] = arr;
|
|
|
+ for (int i = 1; i < cols; i++)
|
|
|
+ {
|
|
|
+ array[i] = new Player[rows];
|
|
|
+ arr.CopyTo(array[i].AsSpan());
|
|
|
}
|
|
|
|
|
|
return array;
|
|
|
}
|
|
|
|
|
|
- public static Player[][] CopyArrayBuiltIn(this Player[][] source)
|
|
|
+ public static Player[][] DeepCopy(this Player[][] source)
|
|
|
{
|
|
|
var len = source.Length;
|
|
|
var dest = new Player[len][];
|
|
|
|
|
|
- for (var x = 0; x < len; x++)
|
|
|
+ for (var i = 0; i < len; i++)
|
|
|
{
|
|
|
- var inner = source[x];
|
|
|
+ var inner = source[i];
|
|
|
var ilen = inner.Length;
|
|
|
var newer = new Player[ilen];
|
|
|
Array.Copy(inner, newer, ilen);
|
|
|
- dest[x] = newer;
|
|
|
+ dest[i] = newer;
|
|
|
}
|
|
|
|
|
|
return dest;
|