Witam, mam pytanie odnośnie prologu. Pytanie jest dość banalne ale nie mogłem znaleźć odpowiedzi na googlach. Otóż chciałbym aby reguła wyrażała następujący warunek: fakt1() i fakt2() i (fakt3() lub fakt3()). Jak zapisać taką regułę? Czy może ona wyglądać tak:" reguła():-fakt1() , fakt2() , (fakt3() ; fakt3())", czy też może w jakiś inny sposób? Z góry dzięki za wszystkie pomoce i wskazówki.
0
0
Jako dwie reguly :>
fakt1(), fakt2, fakt3().
fakt1(), fakt2, fakt4(). // zakladam, ze chodzilo Ci o fakt4(), bo (fakt3 lub fakt3) jest bez sensu...
0
Tak, tak, chodziło mi o fakt4(). Dzięki.
0
Myślałem że to ja mam tutaj wyłączność na Prolog ;)
-
O ile mi wiadomo reguła() :- ... nie jest prawidłowym predykatem (musi być co najmniej jeden
argument
w nawiasach) - ośmieliłem się dorzucić X. -
Rozwiązanie losowej nazwy jest poprawne, ale... Co to za programista co kod powtarza? :]
Lepiej zrobić z tego osobną funkcję, sprawdzającą dokładnie to co chcesz.
kot(X) :- sth1.
ladny(X) :- sth2.
latajacy(X) :- sth3.
sweet(X) :- kot(X).
sweet(X) :- ladny(X).
latajaca_sweet_rzecz(X) :- latajacy(X), sweet(X).
Czyli w twoim przypadku
fakt_3_lub_4(X) :- fakt_3(X).
fakt_3_lub_4(X) :- fakt_4(X).
0
Bez kitu, dobrze kombinujesz :D. Dzięki wielkie.