Find-MovesThreeInRow
Найти все возможные ходы для игр типа 3 в ряд.
Параметры
-Field Двухмерный массив char.
В массиве могут быть любые символы кроме '!' (знак восклицания).
Если присутствуют итемы, которые могут не распознаваться или их не нужно учитывать, то можно заполнить элемент массива '?' (знак вопроса), такие ячейки будут игнорироваться при поиске.
Если присутствуют итемы, которые не смещаются, например препятствия или поле не прямоугольной формы, то можно заполнить элемент массива '*' (звёздочка).
Разница между '?' и '*' в том что в первом случае при расчёте хода будет учитываться как сместится этот элемент, во втором элемент всегда находится на своём месте.
Возвращаемое значение
List<Hashtable>
Property Description Start Точка старт End Точка финиш TotalItems Общее количество итемов MaxLen Максимальная длина в ряд Values Хеш таблица с именами и количеством итемов
Примеры
Найти ход.
Wake up, Neo, select all
cls
$Field = [char[,]]::new(4, 5) # массив 4*5
# заполнить массив
$Field[0, 0] = '0'; $Field[1, 0] = '1'; $Field[2, 0] = '1'; $Field[3, 0] = '0';
$Field[0, 1] = '2'; $Field[1, 1] = '2'; $Field[2, 1] = '3'; $Field[3, 1] = '2';
$Field[0, 2] = '2'; $Field[1, 2] = '1'; $Field[2, 2] = '1'; $Field[3, 2] = '3';
$Field[0, 3] = '3'; $Field[1, 3] = '1'; $Field[2, 3] = '2'; $Field[3, 3] = '0';
$Field[0, 4] = '1'; $Field[1, 4] = '3'; $Field[2, 4] = '2'; $Field[3, 4] = '1';
Show-FieldConsole $Field # показать в консоли
$Moves = Find-MovesThreeInRow -Field $Field # найти все возможное ходы
$Move = Get-BestMove $Moves -Criteria TotalItems # найти ход, при котором соберётся максимальное количество итемов
$Move.Start, $Move.End