Warunek reguły

0

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

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 ;)

  1. 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.

  2. 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.

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