load "Listsort"; load "String"; fun atfed (n, mit: string, mivel: string) = if size mit < n then false else if size mivel < n then false else if (String.isPrefix (substring(mit,size mit-n, n)) mivel) then true else false; fun ellenoriz (_,_,[]) = [] | ellenoriz (n, elem, lista::listatail) = if atfed(n, elem, lista) then (n,lista)::ellenoriz(n, elem, listatail) else ellenoriz(n,elem,listatail); fun levalogat (_,[],_) = [] | levalogat (n,lista::listatail,[]) = ellenoriz(n,lista,listatail)@levalogat(n,listatail,[lista]) | levalogat (n,lista::listatail,marad) = (ellenoriz(n,lista,marad))@(ellenoriz(n,lista,listatail))@(levalogat(n,listatail,[lista]@marad)); fun atfedok n lista = levalogat(n, Listsort.sort String.compare lista,[]);