Liste rekursiv aus Fakten der WB erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Liste rekursiv aus Fakten der WB erstellen

    Für das in meinem letzten Thread beschriebene Problem finde ich keine Lösung. :cry:
    Deswegen habe ich jetzt versucht den Umweg über Listen zu gehen. Mit dem folgenden Konstrukt lese ich die Argumente aller maennlich/1 Prädikate meiner WB ein und schreibe sie in eine Liste:

    Quellcode

    1. maennlich(paul).
    2. maennlich(fritz).
    3. maennlich(karl).
    4. maennlich(karl).
    5. hinzuV(X, L, [X|L]).
    6. liste([]).
    7. liste(L1) :- maennlich(X), hinzuV(X, L, L1), del(X), liste(L).
    8. del(X):- retract(maennlich(X)), !. % loescht den ersten maennlich-Fakt aus der WB, ohne Cut werden alle gelöscht


    Wenn ich nun nach liste(X) frage gibt er mir 5 Lösungen aus, von der leeren Liste bis hin zum richtigen Ergebnis. Ich brauch ja aber nur das letzte Ergebnis. Gibt es eine Möglichkeit nur das letzte auszugeben bzw. eine elegantere Lösung, die nur das letzte Ergebnis produziert. Mit dem Cut komm ich hier nicht weiter, das hab ich schon ausprobiert.

    Wär für jeden Denkanstoß dankbar.

    tom_paris78
  • nur mal so am rande:
    ich geb hier zu fast jeder programmiersprache meinen müll ab, aber prolog kann ich leider nicht (kommt aber im nächsten oder übernächsten semester)

    finds aber super, dass du das forum nicht aufgibst...
    dadurch, dass das forum in suchmaschinen top gelistet ist, finden sich vielleicht ein paar prologer, die uns beitreten