Набросал немного с использованием классов ( смотри UPerebor.pas )
Думаю еще попробовать попозже реализацию последевательного построения карты разными типами фигур ( если конечно стоит )
Или лучше попробовать перебор на карте с произвольно расположенными препятствиями ( Map[Row, Col] = 0 значит ячейка свободна ).
И заметил что надо заменить
PHP код:
function TFigursPerebor.First: Boolean;
var
i, n: Integer;
begin {$BOOLEVAL OFF}
Result := false;
if (FArrLen < FCount) or (FCount <= 0) then
Exit; // < фигуры не помещаются или их 0
SetLength(FFigurs, FCount);
n := 0;
for i := 0 to FCount - 1 do
begin
FFigurs[i] := n;
if (not CheckByIndex(i)) and (not IncByIndex(i)) then
Exit; // < это на будущее ( для произвольных препятствий )
n := FFigurs[i] + 1;
end;
Result := true;
end;
Он сделан с расчетом на будущее