You are on page 1of 9

topalovic(mirko).

topalovic(laki).
topalovic(milutin).
voziKola(mirko).
voziKola(laki).
otac(milutin, laki).
otac(laki, mirko).

?-topalovic(laki).
Yes
?-voziKola(mirko).
Yes
?-voziKola(milutin).
No
?-otac(laki,milutin).
No
?-otac(laki).
ERROR
?-topalovic(pantelija).
No
?-pogrebnik(laki).
ERROR

pratiFilm(kristina).
srecan(maksimilijan).
sviraKlavir(kristina):-pratiFilm(kristina).
slusajuGa(maksimilijan):-trubi(maksimilijan).
trubi(maksimilijan):-srecan(maksimilijan).
?-sviraKlavir(kristina).
Yes
?-slusajuGa(maksimilijan).
Yes

pratiFilm(kristina).
ljutiSe(maksimilijan).
sviraKlavir(kristina):ljutiSe(kristina),
pratiFilm(kristina).
nijeSrecan(maksimilijan):-pratiFilm(maksimilijan).
nijeSrecan(maksimilijan):-ljutiSe(maksimilijan).
?-sviraKlavir(kristina).
No
?-nijeSrecan(maksimilijan).
Yes

woman(mia).
woman(jody).
woman(yolanda).
loves(vincent, mia).
loves(marcellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
?- woman(X).
X = mia ;
X = jody ;
X = yolanda ;
No
?- loves(marcellus, X), woman(X).
X = mia ;
No

loves(vincent, mia).
loves(marcellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
jealous(X,Y):- loves(X,Z),

loves(Y,Z).

?-jealous(marcellus,Y).
Y = vincent ;
Y = marcellus ;
No
AUTOBUS
GUBITAK
HARDVER
JUBILEJ
KOMANDA
TITANIK
+ - * / // mod

?- X=1+2.
X=1+2;
No

X=+(1,2)

?- X=1+2, X=3.
No
?- 3=1+2.
No
is
?- X is 1+2.
x = 3;
No
?- 3 is 1+2.
Yes
?- X is Y+2.
Error
?- Y is 1+2, X is Y+3.
Y=3
X=6;
No
?- 1+2 is 1+2.
No
?- X=3, Y is X+2.
X=3

Y=5;
No
?- X=3, X is X+2.
No
?- Y=3, X=Y.
Y=3
X=3;
No
?- X=Y.
X=_G212
Y=_G212
?- not(X=Y).
No
?- X\=Y.
No
?- not(X\=Y).
X=_G212
Y=_G218

=:= =\= < > >= =<


?- 1+2=:=2+1.
Yes
?- X+2=:=2+1.
Error
?- 1+2=\=2+1.
No
?- X=:=2+1.
Error
==
?- X==Y.
No
?- X=3, X==3.
X=3;
No
% Napisati predikat arnosti 2, koji za
% dati prirodan broj N racuna zbir prvih
% N prirodnih brojeva.

% suma(N)=suma(N-1)+N
% greska : S=N+suma(N-1, S)
suma(1, 1).
suma(N, S):-

M is N-1,
suma(M, R),
S is N+R.

% ?- suma(4, X).
% X = 10;
% Error: Out of local stack
suma(1, 1).
suma(N, S):-

N>1,
M is N-1,
suma(M, R),
S is N+R.

% ?- suma(X, 4).
Error
% ?- suma(3, 6).
Yes
% Napisati predikat koji za dati
% prirodan broj racuna faktorijel.

fakt(0, 1).
fakt(N, F):-

N>0,
M is N-1,
fakt(M, R),
F is N*R.

% Napisati predikat koji racuna


% sumu cifara datog prirodnog broja.
sumac(N, N):sumac(N, S):-

N<10.
N>=10,
M is N//10,
sumac(M, R),
S is N mod 10 + R.

% Napisati predikat koji za dati


% prirodan broj racuna faktorijel.
% Napisati predikat koji za dati
% prirodan broj racuna broj cifara.
% Napisati predikat koji za dati

% trocifren broj racuna sumu


% faktorijela cifara. Ukljuciti
% proveru korektnosti unosa.
% Napisati predikat koji za dati
% trocifren broj proverava da li
% je jednak sumi faktorijela cifara.
% Napisati predikat koji ispisuje
% sve trocifrene brojeve jednake
% sumi faktorijela svojih cifara.

fakt(0, 1):-

!.

fakt(N, F):-

M is N-1,
fakt(M, R),
F is N*R.

br_c(N, 1):-

N < 10,
!.

br_c(N, F):-

M is N // 10,
br_c(M, R),
F is R + 1.

suma3cf(N, _):- br_c(N, Y),


Y =\= 3,
write('Greska: los unos!'),
!,
fail.
suma3cf(N, S):- J is N mod 10,
M is N // 10,
D is M mod 10,
T is M // 10,
fakt(J, FJ),
fakt(D, FD),
fakt(T, FT),
S is FJ + FD + FT.
br3_je_sfc(N):- suma3cf(N, S),
S =:= N.
ispisi:-

br3sfc(100).

br3sfc(1000):- !.
br3sfc(N):-

br3_je_sfc(N),
write(N),
nl,
M is N + 1,
br3sfc(M).

br3sfc(N):-

not(br3_je_sfc(N)),
M is N + 1,
br3sfc(M).

% Napisati predikat koji za dati


% trocifren broj proverava da li
% je Armstrongov.
% Napisati predikat koji proverava
% da li je dati prirodan broj prost.
prost(X) :-

X > 2,
sqrt(X, Y),
round(Y, Z),
not(deljiv(X, 2, Z)).

deljiv(X, A, B) :-

A > B,
!,
fail.

deljiv(X, A, B) :-

X mod A =:= 0,
!.

deljiv(X, A, B) :-

C is A + 1,
deljiv(X, C, B).

% Napisati predikat koji za dati prirodan


% broj prikazuje proste cinioce.
%
%
%
%

Napisati predikat koji za dati prirodan


broj recima ispisuje cifre u odgovarajucem
poretku. Zadatak uraditi bez pomocnih
predikata

brrec(0) :- writeln('nula').
.
.
.
brrec(9) :- writeln('devet').
brrec(N) :-

N > 9,
M is N//10,
brrec(M),
T is N mod 10,
brrec(T).

% Napisati predikat koji za dati prirodan


% broj ispisuje njegov binarni ekvivalent.
brbin(0) :- write(0).
brbin(1) :- write(1).
brbin(N) :N > 1,
M is N//2,
brbin(M),

T is N mod 2,
brbin(T).
bin(1, 1).
bin(N, B) :-

N > 1,
P is N
Q is N
bin(Q,
B is A

mod 2,
// 2,
A),
* 10 + P.

% Napisati predikat koji za dva data prirodna


% broja odredjuje njihov NZD algoritmom
% oduzimanja.
nzd1(N,N,N).
nzd1(N,M,K) :- N > M,
T is N - M,
nzd1(T, M, K).
nzd1(N,M,K) :- M > N,
T is M - N,
nzd1(N, T, K).
% Napisati predikat koji za dva data prirodna
% broja odredjuje njihov NZD euklidovim
% algoritmom.
nzd2(N, 0, N) :- !.
nzd2(N, M, K) :-

T is N mod M,
nzd2(M, T, K).

% Napisati predikat koji za dva data prirodna


% broja odredjuje njihov NZS.
nzs(N, M, K) :-

nzd2(N, M, R),
K is N * M // R.

% Napisati predikat koji za dati prirodan


% broj N odredjuje N-ti po redu prost broj.
% Napisati predikat koji odredjuje n-ti
% clan fibonacijevog niza.
fibonaci(N, 1) :-

N=<2,
!.

fibonaci(N, X) :-

G is N-1,
S is G-1,
fibonaci(G, K),
fibonaci(S, M),
X is K+M.

% Napisati Prolog predikat koji za dati


% prirodan broj N i duzinu D ispisuje
% podbrojeve broja N duzine D.

% Npr: N = 51478, D = 2 => 78, 47, 14, 51


% Napisati predikat koji ispituje da li je
% zapis datog prirodnog broja palindrom.
%
%
%
%
%

Napisati predikat koji za date prirodne br


N i K (K =< N) odredjuje verovatnocu Pk
u odgovarajucoj Bernulijevoj shemi gde je
ekperiment bacanje novcica a povoljan ishod
dobijanje pisma.

% Napisati predikat kojim se odredjuje najveci


% broj nastao nadovezivanjem dva data prirodna
% broja. Na primer, za 917 i 91 dobija se 91917.
%
%
%
%
%

Napisati predikat koji za dati prirodan broj N


proverava da li je savrsen. Broj je savrsen ako
je jednak sumi svojih delitelja izuzev njega
samog, npr: 28 = 1 + 2 + 4 + 7 + 14.

You might also like