1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| sol(L_nombres, Resultat, L_op) :-
genere(L_nombres, L_op, Expr),
Resultat =:= Expr.
genere([A | B], L_op, Expr) :-
genere(B, [], L_op, A, Expr).
genere([], L_op, L_opf, Expr, Expr) :-
reverse(L_op, L_opf).
genere([A | T], L_op, L_opf, Exp, Expr) :-
genere(T, [+ | L_op], L_opf, Exp + A, Expr).
genere([A | T], L_op, L_opf, Exp, Expr) :-
genere(T, [- | L_op], L_opf, Exp - A, Expr).
genere([A | T], L_op, L_opf, Exp, Expr) :-
genere(T, [* | L_op], L_opf, Exp * A, Expr).
genere([A | T], L_op, L_opf, Exp, Expr) :-
genere(T, [/ | L_op], L_opf, Exp / A, Expr). |
Partager