Paweł Kopeć gr. 23 (Informatyka rok II, sem IV) Kraków 04.03.2013

Laboratorium 2 – Prolog

1. Zadanie 1

Napisz predykat liczący silnię danej liczby.

Odpowiedź:

silnia(0,1):-!.

silnia(1,1):-!.

silnia(N,X):- A is N-1, silnia(A,B), X is B*N.

2. Zadanie 2

Napisz predykat znajdujący maks i min wartość w liście Odpowiedź:

min([],A,A).

min([G|O],B,A) :- G =< B, min(O,G,A).

min([G|O],B,A) :- B < G, min(O,B,A).

min([G|O],A) :- min(O,G,A).

maks([],A,A).

maks([G|O],B,A) :- G >= B, maks(O,G,A).

maks([G|O],B,A) :- B > G, maks(O,B,A).

maks([G|O],A) :- maks(O,G,A).

3. Zadanie 3

Zdefiniuj predykat liczący sumę wszystkich elementów listy Odpowiedź:

suma([X|[]],Suma) :- Suma is X, !.

suma([X|Y],Suma) :- suma(Y,Suma1), Suma is Suma1+X, !.

4. Zadanie 4

Jak wypisać jednym poleceniem wszystkie permutacje liczb 1-5

Odpowiedź

permutation([1,2,3,4,5],X).