File: ROSS.PS of Tape: Various/Decus/decus-3
(Source file text) 

PROGRAM ROESSELSPRUNG(OUTPUT);

CONST N = 5; NSQ = 25;

VAR   I,J: INTEGER;
      FELD: ARRAY[1..N,1..N] OF INTEGER;
      A,B: ARRAY[1..8] OF INTEGER;
      ERFOLGREICH: BOOLEAN;


PROCEDURE VERSUCH(I: INTEGER; X,Y: INTEGER);
   VAR K,U,V: INTEGER;
BEGIN K := 0;
   REPEAT K:= K+1;
      U := X + A[K]; V := Y + B[K];
      IF (1<=U) AND (U<=N) AND (1<=V) AND (V<=N) THEN IF FELD[U,V]=0 THEN
        BEGIN
           FELD[U,V] := I;
           IF I < NSQ THEN
                        BEGIN
                           VERSUCH(I+1,U,V);
                           IF NOT ERFOLGREICH THEN FELD[U,V] := 0
                        END
                      ELSE ERFOLGREICH := TRUE
        END
   UNTIL ERFOLGREICH OR (K=8)
END (* VERSUCH *);

BEGIN
   A[1] :=  2; B[1] :=  1;
   A[2] :=  1; B[2] :=  2;
   A[3] := -1; B[3] :=  2;
   A[4] := -2; B[4] :=  1;
   A[5] := -2; B[5] := -1;
   A[6] := -1; B[6] := -2;
   A[7] :=  1; B[7] := -2;
   A[8] :=  2; B[8] := -1;

   ERFOLGREICH := FALSE;
   FOR I := 1 TO N DO FOR J := 1 TO N DO FELD[I,J] := 0;

   FELD[1,1] := 1; VERSUCH(2,1,1);

   WRITELN("WEG DES SPRINGERS:"); WRITELN;
   IF ERFOLGREICH THEN
                     FOR I := 1 TO N DO
                        BEGIN
                           FOR J := 1 TO N DO WRITE( FELD[I,J] :5);
                           WRITELN
                        END
                  ELSE WRITELN("KEINE LOESUNG!")
END.