Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
PROGRAM utvsztoB;
USES SysUtils;
CONST
n = 11;
m = 21;
VAR
map: ARRAY [0..n+1, 0..m+1] OF BOOLEAN;
ways: ARRAY [0..n+1, 0..m+1] OF BYTE;
sor: ARRAY [1..m*n] OF RECORD
sor, oszlop: BYTE;
END;
eleje, vege: INTEGER;
PROCEDURE Init;
VAR
i, j: INTEGER;
BEGIN
Randomize;
FOR i:= 1 TO n DO
BEGIN
FOR j:= 1 TO m DO
BEGIN
map[i, j]:= Random(3) = 0;
END;
END;
FOR i:= 0 TO n+1 DO
BEGIN
map[i, 0]:= TRUE; map[i, m+1]:= TRUE;
END;
FOR i:= 0 TO m+1 DO
BEGIN
map[0, i]:= TRUE; map[n+1, i]:= TRUE;
END;
END;
PROCEDURE Dump;
VAR
i, j: INTEGER;
BEGIN
WriteLn('------------');
FOR i:= 0 TO n+1 DO
BEGIN
FOR j:= 0 TO m+1 DO
BEGIN
IF ways[i, j] = 2THEN Write('*')
ELSE IF map[i, j] THEN Write('#')
ELSE Write(' ');
END;
WriteLn;
END;
WriteLn('------------');
END;
FUNCTION Ut(s1, o1, s2, o2:INTEGER): BOOLEAN;
VAR
i, j: INTEGER;
keep: BOOLEAN;
s, o: INTEGER;
PROCEDURE Add(i, j: INTEGER);
BEGIN
IF NOT (map[i, j]) AND (ways[i, j] = 0) THEN
BEGIN
sor[vege].sor:= i;
sor[vege].oszlop:= j;
ways[i, j]:= 1;
INC(vege);
END;
END;
BEGIN
FOR i:= 0 TO n+1 DO
FOR j:= 0 TO m+1 DO
ways[i, j]:= 0;
eleje:= 1;
vege:= 2;
sor[eleje].sor:= s1;
sor[eleje].oszlop:= o1;
WHILE eleje < vege DO
BEGIN
s:= sor[eleje].sor; o:= sor[eleje].oszlop;
INC(eleje);
ways[ s, o ]:= 2;
Add(s+1, o);
Add(s-1, o);
Add(s, o+1);
Add(s, o-1);
END;
Ut:= (ways[s2, o2] = 2);
END;
BEGIN
Init;
Ut(1, 1, n, m);
Dump;
ReadLn;
END.