Олимпиадные задачи по программированию. Лучшие решения. Часть 1. Ускова О.Ф - 48 стр.

UptoLike

Function GetNextMonkey(nom:integer):boolean;
var
index:byte;
c:char;
begin
GetNextMonkey:=False;
index:=1; {Номер очередного символа в маршруте }
repeat
c:=Monkeys[nom][index];
case c of
'F':begin {Если был шаг вперед}
if (Plan[Next.x,Next.y] in [' ','?']) then {Если впереди стенка,}
begin {шагать туда нельзя}
Cur:=Next;
Next.x:=Cur.x+Dir.x; Next.y:=Cur.y+Dir.y;
Plan[cur.x,cur.y]:=' ';
if Monkeys[nom][index+1]='E' then {Обезьянка здесь вышла }
begin
GetNextMonkey:=Plan[Next.x,Next.y] in ['?','#']; {если это
невозможно}
if [Plan[Next.x,Next.y]]*['?','#']=[] then exit; {запоминаем ошибку }
Plan[Next.x,Next.y]:='#' {иначе устанавливаем выход }
end;
if Plan[Next.x,Next.y] in ['?'] then
Plan[Next.x,Next.y]:=' ';
Cur:=Next;
Next.x:=Cur.x+Dir.x; Next.y:=Cur.y+Dir.y; {--------}
if cur.y>=T then T:=cur.y+1; {Изменяем местоположение
обезьянки }