main(Number, List, ResultExpression) :- % gal List ir nereikia bus visalaik vienodas generate_all_lists(List,Lists), % List gal [1,2,3,4,5,6,7,8,9] proof_expression(Lists,Number,ResultExpression). proof_expression([H|T], Number, ResultExpresion) :- join_numbers(H, [], Templist), % here goes checking if expression is equal to number proof_expression(T, Number, ResultExpression). split_list(L,[H,H2|T2]) :- append(H,T,L), H\=[], T\=[], split_list(T,[H2|T2]) . split_list(L,[L]). join_numbers([], Result, Result). join_numbers([H | T], Start, Result) :- % List = [H | T], list_to_num(H, 0, X), append(Start, [X], Result1), join_numbers(T, Result1, Result). list_to_num([],N,N). list_to_num([H|T],N0,N) :- N1 is N0*10 + H, list_to_num(T,N1,N). printas([H|T]) :- %L = [H | T], write(H),nl, %write(H),nl, printas(T).