Hallo,
ich tüfftele seit ein paar Tagen an einer Prologaufgabe, komme aber irgendwie nicht weiter. Die Aufgabe ist es, ein Programm zu erstellen/ ein Prädikat zu entwerfen, das es ermöglicht, alle möglichen Anagramme eines Wortes auszugeben:
Für dieses Problem hab’ ich Folgendes:
anagramm([], []).
anagramm([Kopf|Rest], Anagramm) :-
anagramm(Rest, N1),
auswählen(Kopf, N1, Anagramm).
auswählen(Element, Liste, [Element|Liste]).
auswählen(Element, [Kopf|Liste], [Kopf|Liste1]) :- auswählen(Element, Liste, Liste1).
Soweit klappt das ja auch, aber wie kann ich jetzt zusätzlich Anagramme ausschließen, die keinen Sinn ergeben? Beispielsweise bei dem Wort Maus könnte als akzeptierte Antwort Saum rauskommen, aber nicht Smua. Ich habe mir gedacht, dass ich vielleicht ein Lexikon aufstelle mit möglichen Wörtern und unmöglichen. Aber wie könnte ich dieses Lexikon mit meinen Prädikaten verknüpfen?
Kann mir da vielleicht jemand einen Denkanstoß geben? Oder irgendeinen anderen Tipp, wie ich das Problem lösen kann?