Bonsoir,
Voila je dois faire un prog sur PROLOG (version 2.0) qui fais la simplification des expressions arithmétiques par exp : ((a-a) * 332 + (-(-2) + v - k * (4 - (1234 - 1230)) donne 2+v
mais la j'ai un soucis je bloque sur la façon de débuter les clauses j'ai pensé a isoler les opérateurs dans une liste et les nbr dans une autres mais reste toujours le problème de priorité concernant les parenthèses et les opérateurs bien sure ca aurais pu être facile si on pouvait utiliser directement les opérateurs dans les règles comme sa j'aurais pu mettre plusieurs hypothèses comme par exemple :
mais ça ne marche pas si quelqu'un a une petite idée comment faire ou comment commencer ca serait Génial de votre part
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CLAUSES smpl (X+Y, R) :- number(X), number(Y), !, R is X + Y. smpl (A+X, R) :- number(A), !, smpl(X + A, R). smpl(X + 0, R) :- smpl(X, R). smpl (X*Y, R) :- number(X), number(Y), R is X*Y. smpl (X*A, R) :- number(A), smpl (A*X, R). smpl (1*X, R) :- smpl (X, R). smpl (0*X, 0) :- !. smpl (U*X + V*X, R) :- smpl ((U + V)*X, R). smpl (U*X V*X, R) :- smpl ((U V)*X, R). smpl (X 0, R) :- smpl (X, R).
Merci d'avance .
Cordialement.
Partager