Prolog: ID zu Prädikaten zuordnen

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

  • Prolog: ID zu Prädikaten zuordnen

    Hallo malwieder,

    beschäftige mich immernoch mit meinem Familien-Problem.
    ich würde den maennlich etc. Prädikaten nun gern IDs zuordnen, damit doppelte Namen nicht sofort gelöscht werden, wenn es eine Namensgleichhet gibt.
    Eine ID zu generieren habe ich inzwischen hinbekommen, allerdings hakt es noch beim Einfügen in das Prädikat. Mit der folgenden Regel:

    Quellcode

    1. maennlich(M, X):- maennlich(M), generate_ID(X), writeq(maennlich(M, X)), write('.'), nl, fail.


    verabschiedet er sich immer in eine Endlosschleife, was wohl am Prädikat generate_ID/1 liegt. Alleine funktioniert dieses Prädikat jedoch.
    Wenn ich dieses Prädikat an die erste Stelle hole:

    Quellcode

    1. maennlich(M, X):- generate_ID(X), maennlich(M), writeq(maennlich(M, X)), write('.'), nl, fail.


    produziert er zwar immernoch eine Endlosschleife, aber er macht zwischendurch noch ein Paar Ausgaben. Allerdings kommt auch hier nicht das Gewünschte heraus. Dann gibt er nämlich sämtliche Maennlich-Prädikate mit derselben ID aus und inkrementiert diese ID dann bei jedem Durchlauf.

    Quellcode

    1. ?- maennlich(M, X).
    2. maennlich(paul, 1).
    3. maennlich(fritz, 1).
    4. maennlich(heinz, 1).
    5. maennlich(paul, 2).
    6. maennlich(fritz, 2).
    7. maennlich(heinz, 2).
    8. maennlich(paul, 3).
    9. maennlich(fritz, 3).
    10. maennlich(heinz, 3).
    11. usw.
    Alles anzeigen

    Hat jemand eine Idee? Ich seh vor lauter Bäumen schonwieder nicht den Wald. :cry:

    Bis dann

    tom_paris78