  FUNCTION MinGefunden (Pos:PositionsTyp;i:Byte;VAR Min:PositionsTyp):Boolean;
    { Suche den i-t kleinsten Nachfolger von Pos : }
    VAR count1 , count2 , count3 ,
        NextIndex : Byte  ; { Anzahl der Elemente in der Nachfolgerliste }
        NextListe : ARRAY[1..FelderAnzahl] OF
                    RECORD Nachfolger : Byte; Pos : PositionsTyp ; END;
    BEGIN
      NextIndex := 0 ;
      { Nachfolger nach ihrer Nachfolgeranzahl aufsteigend sortieren : }
      FOR count1 := 1 TO 8 DO
        IF Erlaubt (Pos,count1,Min) THEN BEGIN { Element in Liste aufnehmen }
          count2 := 1 ; { Erste Stelle zum Einsetzen suchen : }
          WHILE ( count2 <= NextIndex ) AND
            ( NextListe[count2].Nachfolger < Brett[Min.x,Min.y].NachfolgerAnz ) DO
            Inc ( count2 );
          { Listenelemente hinter erster Stelle nach hinten rcken : }
          FOR count3 := NextIndex DownTO count2 DO
            NextListe[count3+1] := NextListe[count3];
          { Element in Nachfolgerliste einsetzen : }
          NextListe[ count2 ].Pos := Min ;
          NextListe[ count2 ].Nachfolger := Brett[ Min.x,Min.y].NachfolgerAnz ;
          Inc ( NextIndex );
        END;  { If }
      Min := NextListe[i].Pos ; MinGefunden := i <= NextIndex ;
    END;  { MinGefunden }
