program kun; const n=8; var a, zi, zj: array [1..n, 1..n] of integer; procedure Init; var i,j: integer; begin for i:=1 to n do for j:=1 to n do begin a[i,j]:= -1; zi[i,j]:= -1; zj[i,j]:= -1; end; end; procedure Hraj (ii, jj, i,j:integer; k:integer); begin if (i>=1) and (i<=n) and (j>=1)and (j<=n) then begin if (a[i,j] = -1) or (a[i,j] > k) then begin a [i,j] := k; zi[i,j] := ii; zj[i,j] := jj; Hraj(i,j, i+2,j+1, k+1); Hraj(i,j, i+2,j-1, k+1); Hraj(i,j, i-2,j+1, k+1); Hraj(i,j, i-2,j-1, k+1); Hraj(i,j, i+1,j+2, k+1); Hraj(i,j, i+1,j-2, k+1); Hraj(i,j, i-1,j+2, k+1); Hraj(i,j, i-1,j-2, k+1); end; end; end; procedure Vypis; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do if a[i,j] = -2 then write ('!':3) else if a[i,j] = -1 then write ('x':3) else write (a[i,j]:3); writeln; end; end; procedure Prekazky; var i,j: integer; begin for i:= 3 to 5 do for j:=2 to 4 do a[i,j] := -2; end; procedure CestaP (i, j: integer); begin if (i >= 1) and (j >= 1) then begin writeln (a[i,j], '. krok ', i, ',', j); CestaP (zi[i,j], zj[i,j]); end; end; procedure Cesta (i, j: integer); begin if (i >= 1) and (j >= 1) then begin Cesta (zi[i,j], zj[i,j]); writeln (a[i,j], '. krok ', i, ',', j); end; end; begin Init; Prekazky; Hraj (-1,-1, 1,1, 0); Vypis; Cesta (8,8); readln; end.