Gegeben TatsacheListe, um die Empfindlichkeit
likes([apples, oranges], john).
wie konnte ich
likes([apples, oranges], Who).
und
likes([oranges, apples], Who).
und erhalten gleiche Ergebnis abfragen?
Gegeben TatsacheListe, um die Empfindlichkeit
likes([apples, oranges], john).
wie konnte ich
likes([apples, oranges], Who).
und
likes([oranges, apples], Who).
und erhalten gleiche Ergebnis abfragen?
Wenn in likes/2
, die erste (Liste) Argument wird immer manuell sortiert und enthält keine Wiederholungen, Abfrage mit
likes_list(Stuff,Person) :- sort(Stuff,Sorted), likes(Sorted,Person).
Wenn Sie nicht sortieren wollen, ich so etwas tun würde:
Datei:
likes([apples, oranges], jo).
likes_find([],_).
likes_find([Head | Tail] , Who):-
likes(List1 , Who),
member(Head , List1),
likes_find(Tail ,Who).
Test:
?- likes_find([oranges,apples],X).
X = jo .
?- likes_find([oranges,apples,fail_here_plz],X).
false.
?- likes_find([oranges],X).
X = jo .
?- likes_find([oranges,apples],jo).
true .
?- likes_find([apples,oranges],jo).
true .
Haben Sie etwas versucht? – Muggen
@Muggen: noch nicht – qutron