Find-MovesThreeInRow

Найти все возможные ходы для игр типа 3 в ряд.
Параметры

  • -Field Двухмерный массив char.
    В массиве могут быть любые символы кроме '!' (знак восклицания).
    Если присутствуют итемы, которые могут не распознаваться или их не нужно учитывать, то можно заполнить элемент массива '?' (знак вопроса), такие ячейки будут игнорироваться при поиске.
    Если присутствуют итемы, которые не смещаются, например препятствия или поле не прямоугольной формы, то можно заполнить элемент массива '*' (звёздочка).
    Разница между '?' и '*' в том что в первом случае при расчёте хода будет учитываться как сместится этот элемент, во втором элемент всегда находится на своём месте.

Возвращаемое значение

  • List<Hashtable>

    PropertyDescription
    StartТочка старт
    EndТочка финиш
    TotalItemsОбщее количество итемов
    MaxLenМаксимальная длина в ряд
    ValuesХеш таблица с именами и количеством итемов

Примеры

  1. Найти ход.

    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