Test (4 novembre)

Organisation


L'usage de l'ordinateur est bien entendu autorisé. Toute utilisation (même lancement dans un autre onglet ou une autre fenêtre) de la messagerie est interdite. Toute communication entre participants l'est également.

Sujet


Votre entreprise a besoin d'évaluer certaines formules logiques pour vérifier qu'elles font bien ce qui est prévu. Vous devez écrire, en Python, un programme eval.py qui s'utilisera ainsi :

  • On lancera python eval.py fichierfichier contient une suite de lignes.
  • Chaque ligne est d'une des formes suivantes
    • variable=valeurvariable est un nom alphanumérique commençant par une lettre et ayant au maximum 13 caractères et valeur est 0 ou 1
    • variable=not autrevariable qui calcule le non logique de autrevariable et le stocke dans variable
    • variable=autrevariable1 and autrevariable2 qui calcule le et logique et autrevariable1 et autrevariable2 et le stocke dans variable
    • en plus de and, on dispose également de or (ou logique), xor (ou exclusif), nand (négation du et logique), nor (négation du ou logique) et xnor (négation du ou exclusif)
    • un nom de variable seul
  • Une fois qu'une variable a été affectée, elle ne peut pas être ré-affectée (pas besoin de le vérifier)
  • Le programme devra uniquement afficher des sorties du type "variable=valeur", où variable est le nom de la variable qui était seul sur une ligne et valeur la valeur logique (0 ou 1) de cette variable.

Par exemple, si le fichier test1.txt contient

a=1
b=0
c=1
d=a and b
e=not d
f=c and d
f
c
e

La sortie de python eval.py test1.txt devra être

f=0
c=1
e=1

En cas d'erreur dans le fichier d'entrée, votre programme est autorisé à faire ce qu'il souhaite. Vous n'êtes notamment pas obligés de détecter ces erreurs.

Rendu


Vous enverrez votre programme en attachement d'un message envoyé à alexis.polti@telecom-paristech.fr et sam@rfc1149.net. À partir du moment où vous vous connecterez sur votre messagerie, toute modification sera strictement interdite. Le sujet du message devra être "[ELECINF112] Test 4 novembre".