roditelj(dragan, dusan). roditelj(milica, dusan). roditelj(dusan, toma). roditelj(dusan, jovana). roditelj(dusan, ivan). roditelj(toma,marko). roditelj(verica, marko). roditelj(toma,maja). roditelj(verica, maja). musko(dragan). musko(dusan). musko(toma). musko(marko). musko(ivan). zensko(jovana). zensko(verica). zensko(maja). otac(X,Y):-roditelj(X,Y),musko(X). majka(X,Y):- roditelj(X,Y),zensko(X). brat(X,Y):-roditelj(Z,X),roditelj(Z,Y),musko(X),not(X=Y). sestra(X,Y):-roditelj(Z,X),roditelj(Z,Y),zensko(X),not(X=Y). tetka(X,Y):-roditelj(Z,Y),sestra(X,Z). stric(X,Y):-roditelj(Z,Y),brat(X,Z). %maksimum dva/tri broja maks(X,Y,X):-X>=Y. maks(X,Y,Y):- X0, C is N mod 10, K1 is K*10+C, N1 is N // 10, obrni(N1,X,K1). %suma od 1 do N sumaN(N,S):- suma(N,0,S). suma(0,S,S). suma(N,S1,S):-N>0,SN is S1+N,N1 is N-1,suma(N1,SN,S). % suma pranih i neparnih sumaPN(N,SP,SN):-sumaPN(N,0,SP,0,SN). sumaPN(0,SP,SP,SN,SN). sumaPN(N,SP1,SP,SN1,SN):- N>0,N mod 2=:=0,SP2 is SP1+N,N1 is N-1,sumaPN(N1,SP2,SP,SN1,SN). sumaPN(N,SP1,SP,SN1,SN):- N>0,N mod 2=\=0,SN2 is SN1+N,N1 is N-1,sumaPN(N1,SP1,SP,SN2,SN). % Drugi nacin za racunanje sume parnih i neparnih ( bez akumulatora) sumaPN1(0,0,0). sumaPN1(N,SP,SN):-N>0,N mod 2 =:= 0, N1 is N-1, sumaPN1(N1,SP1,SN),SP is SP1+N. sumaPN1(N,SP,SN):-N>0,N mod 2 =\= 0, N1 is N-1, sumaPN1(N1,SP,SN1),SN is SN1+N. % k-ta cifra gledano s desna u levo ktaDL(N,1,X):-N>0, X is N mod 10. ktaDL(N,K,X):-N>0, N1 is N // 10,K1 is K-1, ktaDL(N1,K1,X). %k-ta cifra gledano s leva u desno ktaLD(N,K,X):-obrni(N,N1),ktaDL(N1,K,X). % LISTE %element liste elem(X,[X|_]). elem(X,[_|Y]):-elem(X,Y). %dodaj na pocetak liste dodajPoc(X,L,[X|L]). dodajKraj(X,[],[X]). dodajKraj(X,[L|Rep],[L|Rep1]):-dodajKraj(X,Rep,Rep1). %suprotan listaSuprotni(X,X1):-listaSup(X,X,X1). listaSup([],_,[]). listaSup([X|R],Lista,[X|Rep]):- X1 is -X,not(elem(X1,Lista)),listaSup(R,Lista,Rep). listaSup([X|R],Lista,Rep):- X1 is -X, elem(X1,Lista) ,listaSup(R,Lista,Rep). %neopadajuci prefiks i ostatak lista([],[],[]). lista([X,Y|Rep],[X|NeopRep],Ost):-X=Y.