Ich möchte meine „kredite“ hier zwar nicht ausschöpfen, aber während der Abarbeitung bin ich auf ein anderes Problem gestoßen.
Ich habe versucht ein anderes Einstein Problem in Prolog zu Codieren worin auch Negationen wie „A sitzt nicht neben B“ vorkommen.
Als Hilfsprädikate habe ich die gleichen verwendet die auch im angegebenen Link vorkommen. Also:
links(A,B,[A|[B|\_]]).
links(A,B,[_|R]):-links(A,B,R).
neben(A,B,L):-links(A,B,L);links(B,A,L).
Demnach habe ich Aussagen wie:
„Der Herr im Hemd saß nicht neben dem Herrn mit der Weste“
Codiert als:
neben([_,hemd,_],[_,not(weste),_],X),
Dies scheint zwar syntaktisch korrekt zu sein, da der Compiler keinen Fehler ausgibt, aber Logisch falsch da nur ein „false“ ausgegeben wird wenn es ausgeführt wird.
Wie ich die Negation „nicht neben“ anders darstellen könnte fällt mir leider nicht ein. Kann mir vielleicht jemand weiterhelfen?
Den gesamten Code (25 Zeilen) gibt es hier:
http://uploaded.to/file/ezjmoh