permutacija1([],[]).
permutacija1([H|T],R):-permutacija1(T,R1),
	ubaci(H,R1,R).
	
ubaci(X,[],[X]).
ubaci(X,[H|T],[X,H|T]).
ubaci(X,[H|T],[H|R1]):-ubaci(X,T,R1).

duplikati1([],[]).
duplikati1([H|T],R1):-member(H,T),!,duplikati1(T,R1).
duplikati1([H|T],[H|R1]):-not(member(H,T)),duplikati1(T,R1).

kombinacije([],N,[]):-N>0, fail.
kombinacije(_,0,[]):-!.
kombinacije([H|T],K,R):-kombinacije(T,K,R).
kombinacije([H|T],K,[H|R]):-K1 is K-1,kombinacije(T,K1,R).

varijacije(L,K,R):-kombinacije(L,K,R1),permutacija1(R1,R).

sortirana([]).
sortirana([H]).
sortirana([H1,H2|T]):-H1=<H2, sortirana([H2|T]).

naivnisort(L,R):-permutacija1(L,R),sortirana(R),!.

isort([],[]).
isort([H|T], R):- isort(T,R1), ubacisort(H,R1,R).

ubacisort(X,[],[X]).
ubacisort(X,[H|T],[X,H|T]):-X=<H.
ubacisort(X,[H|T],[H|R]):-X>H,ubacisort(X,T,R).
