osoba(marko). osoba(ana). ima_vozacku(ana). auto(fiat). auto(honda). vozi(X,Y):-osoba(X),ima_vozacku(X),auto(Y). vozi(marko,fiat). %bojenje grafa bojenje(Srb,Mak,Cg,Alb,Bug,Rum,Madj):-sused(Srb,Mak), sused(Srb,Cg), sused(Srb,Bug), sused(Srb,Rum), sused(Srb,Madj), sused(Mak,Alb), sused(Bug,Rum), sused(Rum,Madj), sused(Bug,Mak), sused(Cg,Alb). sused(X,Y):-boja(X),boja(Y),X\==Y. boja(zuta). boja(plava). boja(crvena). % lista se predstavlja kao skup el. u okviru uglastih zagrada % rek. definicija % 1. prazna lista [] je lista % 2. [H|T], H je glava liste, a T je rep liste koji je isto lista poslednji([],[]):-fail. poslednji([H],H). poslednji([H|T],X):-poslednji(T,X). % moguca je i ova reprezentacija liste: % [H1,H2,...,HN|T] % [H1,H2,...,HN] %:-ntielement([1,2,3,4,5],3,X). %X=3; nti([],X,Y):-fail. nti([H|T],1,H). nti([H|T],N,X):-N1 is N-1,nti(T,N1,X). duzina([], 0). duzina([H|T], X) :- duzina(T, X1), X is X1+1. obrni([],[]). obrni([H|T],R):-obrni(T,T1),append(T1,[H],R). % palindrom([x,a,m,a,x]). % true %palindrom([x,a,m,a]). % false (fail) palindrom(L):-reverse(L,RL),L==RL. ravnaj([],[]). ravnaj([H|T],R):-is_list(H),ravnaj(H,HR),ravnaj(T,TR),append(HR,TR,R). ravnaj([H|T],R):-not(is_list(H)),ravnaj(T,TR),append([H],TR,R). perm([],[]). perm([H|T],P):-perm(T,TP),ubaci(H,TP,P). ubaci(X,[],[X]). ubaci(X,[H|T],[X,H|T]). ubaci(X,[H|T],[H|TP]):-ubaci(X,T,TP). komb(L,0,[]). komb([H|T],K,[H|R1]):-K>0,K1 is K-1,komb(T,K1,R1). komb([H|T],K,R):-K>0,komb(T,K,R). nsort(L,S):-perm(L,S),sortirana(S). sortirana([]). sortirana([H]). sortirana([H1,H2|T]):-H1=