Page 1 sur 1

Notation polonaise inversée

Publié : jeu. déc. 23, 2010 9:52 pm
par magicvinni
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

Re: Notation polonaise inversée

Publié : ven. déc. 24, 2010 8:23 am
par parisse
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;
}

Re: Notation polonaise inversée

Publié : ven. déc. 24, 2010 11:41 am
par magicvinni
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