Ich möchte eine Liste von einem Graphen erhalten. Die Variablen mit zwei Buchstaben sind die Punkte und der eine Buchstabe ist eine Linie. Jede Zeile kann mehrere Punkte enthalten.Prolog Get Liste aus verschiedenen Beziehungen
conn(bs, oc, c).
conn(oc, tc, c).
conn(bs, gp, j).
conn(gp, cc, j).
conn(gp, pc, p).
conn(pc, ls, p).
conn(gp, oc, v).
conn(oc, pc, b).
conn(pc, cc, b).
conn(tc, ls, n).
conn(ls, cc, n).
link(X, Y, Z) :- conn(X, Y, Z), !.
link(X, Y, Z) :- conn(Y, X, Z).
Jetzt möchte ich eine Liste mit allen Punkten einer Zeile erhalten. Durch die Eingabe von:
getpoints(c, X).
würde ich
X = [bs, oc, tc]
Dies ist zu erwarten, wie ich versuchte, meine Ergebnisse zu erhalten:
getpoints(Line, [First|[]]) :- not(link(First, _Second, Line)).
getpoints(Line, [First|Rest]) :- link(First, _Second, Line), getpoints(Line, Rest).
Hat jemand eine Idee?
Ich weiß, dass ich die fehlenden Punkte in den ersten Relationen habe, aber ich kann den Beitrag nicht mehr bearbeiten. Aber ich habe es mit der richtigen Syntax versucht :-) –
Punkte, für 'conn', hinzugefügt. – max66