nachbar(20, [14, 8, 2]). nachbar(19, [ 9, 3, 1]). nachbar(18, [ 5, 4, 2]). nachbar(17, [10, 7, 3]). nachbar(16, [ 8, 6, 3]). nachbar(15, [12, 7, 5]). nachbar(14, [20, 6, 4]). nachbar(13, [11, 5, 1]). nachbar(12, [15,10, 2]). nachbar(11, [13, 9, 4]). nachbar(10, [17,12, 8]). nachbar( 9, [19,11, 6]). nachbar( 8, [20,16,10]). nachbar( 7, [17,15, 1]). nachbar( 6, [14,16, 9]). nachbar( 5, [18,15,13]). nachbar( 4, [18,14,11]). nachbar( 3, [19,17,16]). nachbar( 2, [20,18,12]). nachbar( 1, [19,13, 7]). zug(Pos, Nachf) :- nachbar(Pos, Nachbarn), member(Nachf, Nachbarn). start :- nachbar(Startpos, _), weg([Startpos], Startpos, Loesung, Kosten), write(Loesung), nl, write(Kosten), nl, fail. weg(Ergebnis, Kosten, Pfad, Kosten) :- Kosten < 1964, length(Ergebnis, 20), reverse(Ergebnis, Pfad). weg([P | Anfang], Kosten, Loesung, Ergebnis) :- %Kosten < 1944, % SINVOLL???? zug(P, Nachf), \+ member(Nachf, Anfang), length(Anfang, Tiefe), KostenNeu is Kosten + Nachf*(Tiefe + 2), weg([Nachf, P | Anfang], KostenNeu, Loesung, Ergebnis). wieoft :- % zeigt, dass es 3240 Wege gibt. findall(-, (nachbar(S,_), weg([S],0,_,_)), Liste), length(Liste, N), write(N).