(* zadatak pod a *) fun provjera(x,nil) = false | provjera(x,h::t) = if(x=h) then true else provjera(x,t); fun f0(x,s) = provjera(x,explode(s)); (* zadatak pod b *) fun posebna nil = nil | posebna(h::t) = if(provjera(h,t)) then posebna(t) else [h]@posebna(t); (* iz jedne od char lista, koje nastaju od unesenih stringova, potrebno je napraviti novu char listu u kojoj ce biti svi oni karakteri iz pocetne, ali bez ponavljanja, kako se ti karakteri ne bi brojali 2 ili vise puta pri provjeri. npr. iz char liste [n,i,k,o,l,i,n,a] dobijamo char listu [k,o,l,i,n,a] *) fun provjera1(nil,l) = 0 | provjera1(h::t,l) = if(provjera(h,l)) then (1+provjera1(t,l)) else provjera1(t,l); fun f1(s1,s2) = provjera1(posebna(explode(s1)),explode(s2)); (* zadatak pod c *) fun nova(nil,l) = nil | nova(h::t,l) = if(provjera(h,l)) then [h]@nova(t,l) else nova(t,l); fun f2(s1,s2) = nova(posebna(explode(s1)),posebna(explode(s2))); (* zadatak pod d - najlakse je od broja napraviti string, pa primjeniti funkciju f2 *) fun brojustring x = if (x>0) then brojustring(x div 10)^str(chr(ord(#"0")+(x mod 10))) else ""; fun nova1(nil,l) = nil | nova1(h::t,l) = if(provjera(h,l)) then [ord(h)-ord(#"0")]@nova1(t,l) else nova1(t,l); (* fja nova1 vraca INT listu *) fun f3(broj,string) = nova1(posebna(explode(brojustring(broj))),posebna(explode(string)));