(* zadatak pod a *) fun mala nil = nil | mala(h::t) = if (ord(h)>=97 andalso ord(h)<=122) then [h]@mala t else mala t; fun velika nil = nil | velika(h::t) = if (ord(h)>=65 andalso ord(h)<=90) then [h]@velika t else velika t; fun brojm(x,nil) = 0 | brojm(x,h::t) = if x=h then (1+brojm(x,t)) else brojm(x,t); fun brojv(x,nil) = 0 | brojv(x,h::t) = if x=h then (1+brojv(x,t)) else brojv(x,t); fun postoji(x,nil) = false | postoji(x,h::t) = if x=h then true else postoji(x,t); fun provjera(nil,l1,l2) = true | provjera(h::t,l1,l2) = if (brojm(h,l1)=brojv(chr(ord(h)-32),l2)) then (if(postoji(chr(ord(h)-32),l2)) then provjera(t,l1,l2) else false) else false; fun f1 s = provjera(mala(explode s),mala(explode s),velika(explode s)); (* zadatak pod b - fje prva i druga su sa roka juli 2010 *) fun prva(l,0) = nil | prva(h::t,k) = [h]@prva(t,k-1); fun druga(nil,duzina,rot,brojac) = nil | druga(h::t,duzina,rot,brojac) = if((brojac>=rot) andalso (brojac=3 then (if(h+1=hd(t) andalso h+2=hd(tl(t))) then prva(kopija,brojac)@provjeri(druga(kopija,length(kopija),brojac+3,0),druga(kopija,length(kopija),brojac+3,0),0) else provjeri(t,kopija,brojac+1)) else kopija; (* fja provjeri nije jednostavna! *) fun f2 l = provjeri(l,l,0);