fun broj(nil,x)=0 | broj(h::t,x) = if h=x then 1+broj(t,x) else broj(t,x); fun nova(nil)=nil | nova(h::t) = if (broj(t,h)>0) then nova(t) else [h]@nova(t); (* od unesene liste, u kojoj se neki br. pojavljuju i vise puta, pravimo listu svih brojeva iz pocetne, ALI svaki visestrukosti 1 *) fun provjera1(nil,x)= false | provjera1(h::t,x) = if h=x then true else provjera1(t,x); (* provjerava da li se neki el. pojavljuje u nekoj listi *) fun provjera2(nil,nil,kopija1,kopija2) = true | provjera2(h1::t1,h2::t2,kopija1,kopija2) = if length(kopija1)=length(kopija2) then (if(provjera1(kopija2,h1) andalso provjera1(kopija1,h2)) then provjera2(t1,t2,kopija1,kopija2) else false) else false; (* provjerava da li su liste nastale fjom nova identicne *) fun visestrukost(nil,x)=0 | visestrukost(h::t,x) = if h=x then 1+visestrukost(t,x) else visestrukost(t,x); fun provjera3(nil,prva,druga) = true | provjera3(h::t,prva,druga) = if visestrukost(prva,h)=visestrukost(druga,h) then provjera3(t,prva,druga) else false; fun konacna(l1,l2) = if provjera2(nova l1,nova l2,nova l1,nova l2) then (if provjera3(nova l1,l1,l2) then true else false) else false;