:-use_module(library(lists)). keres(_,_,[],Akku,Output):-reverse(Akku,Output). keres(K,Szo,[Fej|Lista],Akku,Output):- (sub_atom(Szo,_,X,0,S), sub_atom(Fej,0,X,_,S), X =< K, X > 0)-> keres(K,Szo,Lista,[X-Fej|Akku],Output); keres(K,Szo,Lista,Akku,Output). valogat(_,[],_,Akku,Output):-reverse(Akku,Output). valogat(K,[Fej|Lista],Marad,Akku,Output):- ( Marad = []-> (keres(K,Fej,Lista,[],Out),append(Marad,[Fej],Nulista),Out=[]-> valogat(K,Lista,Nulista,Akku,Output);valogat(K,Lista,Nulista,[Fej-Out|Akku],Output)); (keres(K,Fej,Marad,[],Out1),keres(K,Fej,Lista,[],Out2),append(Out1,Out2,Out),Out=[]-> valogat(K,Lista,Nulista,Akku,Output);valogat(K,Lista,Nulista,[Fej-Out|Akku],Output))). max_k_atfedok(K,L1,L2):-valogat(K,L1,[],[],L2).