Cvičenia 5

V moodli odovzdávajte riešenie úloh Fibonacci a GCD (mozete ich spojiť do jedného textového súboru, ak budú dostatočne viditeľne oddelené).

DLV a SMODELS

Vstup

Nasledujúce dve úlohy všetky pracujú s týmto vstupom:

family.sm
mother(shmi,anakin).
father(anakin,luke).
father(anakin,leia).
mother(padme,luke).
mother(padme,leia).
father(luke,ben).
mother(mara,ben).

mother(leia,jacen).
father(han,jacen).

Man / Woman

Pre niektorých ľudí z nášho vstupu vieme určiť akého sú pohlavia (matka/otec). Napíšte logický program, ktorý definuje predikáty man(X) a woman(X), ktoré sú pravdivé vždy, keď (vieme rozhodnúť že) X je muž resp. žena.

manwoman.sm
woman(X) :- mother(X,Y).
man(X) :- father(X,Y).

Ancestor

Napíšte logický program, ktorý definuje predikát ancestor(A,B), ktorý bude pravdivý vždy, keď A je predkom B.

ancestor.sm
ancestor(X,Y) :- father(X,Y).
ancestor(X,Y) :- mother(X,Y).
ancestor(X,Z) :- ancestor(X,Y), ancestor(Y,Z).

Odd Even

Napíšte logický program, v ktorého najmenšom modeli bude predikát even/1 bude platný pre všetky párne čísla. Obdobne odd/1 bude platný pre všetky nepárne.

Sum

Napíšte predikát sum(S,I) platný práve vtedy keď S = ∑i=0..I i.

Fibonacci

Napíšte predikát fib(F,I) platný práve vtey keď F je I-te Fibonacciho číslo.

Deleno / Modulo

Napíšte predikáty deleno(X,Y,Z) a modulo(X,Y,Z) (s použitím + a *) tak aby

GCD

Napíšte predikát gcd(T,X,Y) tak aby bol platný práve vtedy keď T je najväčším spoločným deliteľom X a Y.

Vim logo FireFox logo CSS XHTML
Jozef Siska @ KAI FMFI UK YoYo @ KSP KAI (DAI) KSP