(* zadatak pod a *) 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); fun konacna(l,nil)=nil | konacna(l,h::t)= if (broj(l,h)>2) then [h]@konacna(l,t) else konacna(l,t); fun f1 x = konacna(x,nova(x)); (* zadatak pod b *) fun provjera(x,nil) = false | provjera(x,h::t) = if(x=h) then true else provjera(x,t); fun posebna nil = nil | posebna(h::t) = if(provjera(h,t)) then posebna(t) else [h]@posebna(t); fun zajednicka(nil,l) = nil | zajednicka(h::t,l) = if provjera(h,l) then [h]@zajednicka(t,l) else zajednicka(t,l); fun f2 (l1,l2,l3) = zajednicka(zajednicka(posebna(l1),posebna(l2)),zajednicka(posebna(l1),posebna(l3))); (* nadjemo prvo zajednicke el. iz 1. i 2 liste, zatim iz 1. i 3., a onda iz te 2 zajednicke, trazimo zajednicku *)