(* zadatak pod a *) fun zbir nil = 0 | zbir(h::t) = ord(h) + zbir(t); fun konacna s = zbir(explode s); (* zadatak pod b *) fun dio(l,n,0,k,brojac) = nil | dio(h::t,n,p,k,brojac) = if (brojac=(n-1)*k) then (if p>0 then [h]@dio(t,n,p-1,k,brojac) else nil) else dio(t,n,p,k,brojac+1); fun dio1(n,p,s) = dio(explode(s),n,p,p,0); fun konacna1(0,p,s) = nil | konacna1(n,p,s) = konacna1(n-1,p,s)@[implode(dio1(n,p,s))]; (* zadatak pod c - uradicu na malo "gluplji" nacin, ali meni laksi. dakle, najprije cu u listu ubaciti vrijednosti fje pod a) podstringova, zatim sortirati listu, t.d. na prvom mjestu bude najveci element, tj. najveca vrijednost i naci kojem podstringu odgovara ta vrijednost.:) *) fun redovi nil = nil | redovi(h::t) = [konacna h]@redovi(t); fun ubaci(x,nil) = [x] | ubaci(x,h::t) = if x>h then x::h::t else h::ubaci(x,t); fun sort nil = nil | sort(h::t) = ubaci(h, sort t); fun najveci l = hd(sort(redovi(l))); fun najvecipodstring(h::t,kopija) = if(najveci(kopija) = konacna h) then h else najvecipodstring(t,kopija); fun konacna2(n,p,s) = najvecipodstring(konacna1(n,p,s),konacna1(n,p,s));