Jak napisać tę regułę w Prologu?

0

Mam problem z napisaniem reguły w prologu. Ola lubi osoby które piją kawe i uprawiają sport. Mam podane jakie osoby piją kawę i uprawiają sport. Wprowadziłam je jako fakty w taki sposób: kawa(Adam). kawa(Ewa). jarosz(Adam).relacje lubienia zdefiniowałam następująco : lubi(Ola,jarosz). lubi(Ola,kawa). To mi nie za bardzo pomaga w dalszej pracy. lubikogos(X,Y) :- lubi(X,Z), Z(Y) a chyba nie ma takiego zapisu jak Z(Y) a trzeba wpisać konkretną nazwę np kawa(Y) tylko jak ja wpisze czy Ola lubi osoby które lubią kawę? Nie mogę tak na sztywno. W jaki sposób mogłabym dać do zrozumienia prologowi co bym chciała? Abym dostała osoby które potencjalnie lubi Ola, lub jaka kolwiek inna po wcześniejszym zdefiniowaniu jakie osoby ktoś lubi?

1

W Prologu atomy pisane są małymi literami, natomiast zmienne zaczynają się od dużych liter. To znaczy, że relacja lubienia musi być zapisana w taki sposób:

lubi(adam, kawa).
lubi(ewa, kawa).
lubi(adam, sport).

lubi(ewa, X) :- lubi(X, kawa), lubi(X, sport).
1

innym rozwiązaniem jest dodanie relacji lubi_osobe(ewa, X) zamiast lubi(ewa, X), bo query lubi(ewa, X) zwraca osoby i rzeczy które ewa lubi, a chcemy tylko osoby

http://rextester.com/ONDE34156

0

Wydaje mi się że nie mam tego zrobić na sztywno, osoba A lubi n czynności i lubi gdy inne osoby wykonują m czynności. Ewa lubi osoby pijące kawę i niepijące herbaty, ale sama pije herbate i uprawia kukurydze w ogródku. Sandra uprawia herbatę i lubi osoby pijące herbate (czyli potencjalnie Sandra lubi Ewę a Ewa Sandry nie). Do interpretacji pozostaje czy wystarczy że dana osoba spełnia jeden warunek czy musi spełniać wszystkie jeśli jest ich więcej. Czyli czy Ewa lubi tylko osoby które uprawiają kukurydze i nie piją herbaty, czy wystarczy że dana osoba uprawia kukurydze lub nie pije herbaty aby była potencjalnie lubiana przez Ewę? Przyjmuje że dana osoba jest lubiana gdy spełni wszytkie warunki.Jest to jednak ciekawy problem ponieważ jeśli przyjmiemy że wystarcczy jeden warunek rodzi nam się pytanie co zrobić jeśli dana osoba wykonuje czynność przez nas nie lubianą? odrzucić ją? wydaje mi się że tak.

Więc bardziej przydatna w tym wypadku jest idea @reptile333

1 użytkowników online, w tym zalogowanych: 0, gości: 1