Programozás‎ > ‎Feladatok‎ > ‎Kisvakond kalandjai‎ > ‎Megoldás‎ > ‎

im_vakond.pas

Letöltés: im_vakond.pas

program kisvakons;

uses crt;
var i,j,k : integer;
ret : array[1..100] of array[1..100] of integer; 
hazsz,retlen,uhosz : integer;
vakx,vaky,barx,bary : integer;//vakond,barat koordinata
be : text;

procedure beolvas();
var x1,x2,y1,y2 : integer;
begin
assign(be,'vakond.txt');
reset(be);
read(be,retlen);
readln(be,uhosz);
readln(be,vakx,vaky,barx,bary);
readln(be,hazsz);
for i:=1 to hazsz do begin
readln(be,x1,y1,x2,y2);
//writeln(x1,y1,x2,y2);
for j:= x1 to x2 do
for k:= y1 to y2 do
ret[j,k] := -1;
end;
end;
procedure megnez(hany,x,y : integer);
begin
ret[x,y] := hany;
writeln(x,' ',y);
if (ret[x+1,y] > (hany + 1)) and (x<retlen) then
megnez(hany+1,x+1,y);
if (ret[x,y+1] > (hany + 1)) and (y<retlen) then
megnez(hany+1,x,y+1);
if (ret[x-1,y] > (hany + 1)) and (x>1) then
megnez(hany+1,x-1,y);
if (ret[x,y-1] > (hany + 1)) and (y>1) then
megnez(hany+1,x,y-1);
end;

procedure kiir(meny : integer);
var ii,jj : integer;
begin
for jj:=meny downto 1 do begin
writeln();
writeln();
for ii := 1 to meny do begin
if ret[ii,jj] = -1 then
write('# ')
else if ret[ii,jj] = 10001 then
write('? ')
else 
write(ret[ii,jj],' ');
end;
end;
end;

BEGIN
for i:=1 to 100 do
for j:=1 to 100 do
ret[i,j] := 10001;
beolvas();
megnez(0,vakx,vaky);
writeln(ret[barx,bary]);
kiir(10);
END.