Bonjour,
Existe-il un moyen de transformer une expression en notation polonaise inversée ? Mon but est d'analyser si une expression est factorisée ou non.
Merci,
Vincent
Notation polonaise inversée
Modérateur : xcasadmin
-
- Messages : 40
- Inscription : dim. août 26, 2007 7:07 am
- Contact :
Re: Notation polonaise inversée
Voila un petit programme récursif qui renvoie sous forme polonaise inversée une expression. Ca marche pour les opérations générales simples (1, 2 arguments et opérateurs + et *), mais pas pour des cas d'opérateurs compliqués comme int etc. où il faudrait l'adapter.
Code : Tout sélectionner
torpn(obj):={
local n,j,f,som,res;
si type(obj)!=DOM_SYMBOLIC alors return obj fsi;
som:=sommet(obj);
f:=feuille(obj);
si type(f)!=DOM_LIST alors return torpn(f),som fsi;
n:=size(f);
si n==1 alors return torpn(f[0]),som fsi;
res:=torpn(f[0]),torpn(f[1]),som;
pour j de 2 jusque n-1 faire
res:=res,torpn(f[j]),som;
fpour;
return res;
}
-
- Messages : 40
- Inscription : dim. août 26, 2007 7:07 am
- Contact :
Re: Notation polonaise inversée
Bonjour,
Merci pour cette réponse rapide qui convient parfaitement. En plus j'ai du coup découvert les fonctions sommet et feuille qui vont grandement m'aider.
Bonnes fêtes de fin d'année,
Vincent
Merci pour cette réponse rapide qui convient parfaitement. En plus j'ai du coup découvert les fonctions sommet et feuille qui vont grandement m'aider.
Bonnes fêtes de fin d'année,
Vincent