[Scheme] Transformer une liste préfixe en arbre général

Transformer une liste préfixe en arbre général [Scheme] - Langages fonctionnels - Programmation

Marsh Posté le 03-04-2013 à 22:12:42    

Voilà j'ai besoin de vous pour créer une fonction, cela fait 2 jours que je comprend  vraiment pas comment je peux faire ça:
 
Écrire la définition complète de la fonction expr->agb qui, pour une ExprBoolPrefixe E donnée, représentant une expression bien formée, rend l’ArbreGenBool représentant cette liste E.
 
Par exemple :
 
 (expr->agb ’v) rend l’arbre représenté par:
 

Code :
  1. (ag-noeud ’v (list))


 
(expr->agb ’(et (ou v f) (non f))) rend l’arbre représenté par:
 

Code :
  1. (ag-noeud ’et
  2.           (list (ag-noeud ’ou
  3.                           (list (ag-noeud ’v (list))
  4.                                 (ag-noeud ’f (list))))
  5.                 (ag-noeud ’non
  6.                           (list (ag-noeud ’f (list))))))


 
(expr->agb ’(non (et (ou v f) (et v v)))) rend l’arbre représenté par:
 

Code :
  1. (ag-noeud ’non
  2.           (list (ag-noeud ’et
  3.                           (list (ag-noeud ’ou
  4.                                          (list (ag-noeud ’v (list))
  5.                                                (ag-noeud ’f (list))))
  6.                      (ag-noeud ’et
  7.                                (list (ag-noeud ’v (list))
  8.                                (ag-noeud ’v (list))))))))


 
(expr->agb ’(non (non v))) rend l’arbre représenté par:
 

Code :
  1. (ag-noeud ’non
  2.           (list (ag-noeud ’non
  3.                           (list (ag-noeud ’v (list))))))


 
Le principe c'est que je dois créer un évaluateur et je dois pouvoir etudier 4 formules qui sont:
 
v
(et (ou v f) (non f))
(non (et (ou v f) (et v v)))
(non (non v))
 
mais pour ça faut pouvoir les transforrmer en arbre.
 
Si vous pouviez m'aider, me mettre sur la piste ou n'importe quoi d'autre je suis preneur.
 
Merci d'avance,

Reply

Marsh Posté le 03-04-2013 à 22:12:42   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed