מידע

מועד הגשה 15/04/2026 23:00:00
מגבלת הגשות אין הגבלה

כניסה

Unserialize

Les fonctions evaluate et simplify ne sont pas disponibles dans cette partie du projet et ne doivent pas être utilisées.

En revanche, une partie du travail est déjà faite pour vous en incluant, dans le corps de la fonction unserialize, une fonction auxiliaire to_list qui transforme une expression parenthésée (str) en une liste de ses éléments constitutifs, appelés tokens. A titre d'exemple, to_list('(2.0 + (x - 12.0))') renvoie:

['(', '2.0', '+', '(', 'x', '-', '12.0', ')', ')']

A vous de compléter le corps de la fonction unserialize, en complétant le corps de la seconde fonction auxiliaire create_tree(...) à partir de là, et en vous assurant que unserialize renvoie effectivement un arbre correspondant à l'expression parenthésée.

Vous êtes fortement invité à vérifier la post-condition de unserialize.


Veuillez soumettre le corps de la fonction suivante:

def unserialize(parent_expr) -> Tree:
    """
    :pre: parent_expr est une expression parenthésée en sortie de serialize
    :return: l'arbre qui a été donné à serialize
    :post: pour tout arbre X, on doit avoir X == unserialize(serialize(X)).
    """