S. 11. Nous aimons regrouper les objets de ce monde selon leurs
qualités et établir des relations entre ces qualités. Ecrire un programme qui
fait des déductions logiques à partir de ces qualités.
Caque ligne de l’entrée standard ( que le programme doit lire à partir du
clavier ) contient une affirmation ou une question ; il doit
répondre à celles-ci en écrivant une ligne sur l ‘écran (sur la sortie
standard).
Les affirmations et les questions concernent différentes qualités. Les qualités
élémentaires ne contiennent qu’un
seul mot, ex. petit, rouge. Les mots INEXISTANT, EXISTE, ET, OU, NON,
SI, ALORS SONT interdits, mais tout autre mot est considéré
comme qualité élémentaire.
Nous exprimons la négation des qualités élémentaires en écrivant le mot NON devant elles. Par
exemple la négation de rouge est
NON rouge.
Nous créons les qualités complexes
en reliant quelques qualités élémentaires ou leurs négations avec les mots ET, OU, ex.
petit ET NON rouge.
La combinaison des deux mots de liaison est interdite (ex. grand ET rouge OU bleu).
Nous permettons trois sortes d’affirmation. La syntaxe de celles-ci :
EXISTE
(qualité)
INEXISTANT (qualité)
SI
(qualité) ALORS (qualité)
Nous pouvons poser une question en écrivant un point d’interrogation à la fin d’une affirmation.
Le programme peut répondre aux affirmations de la manière suivante :
COMPRIS
s’il a reçu une nouvelle information
JESAIS si
l’affirmation découle des précédentes
CELA COTREDIT AUX
PRECEDENTES (dans ce cas il ignore)
PAS COMPRIS
si l’input comporte une erreur de syntaxe
Le programme peut répondre aux questions de la manière suivante :
OUI, ou
encore INEXISTANT si la question
concernait une affirmation vraie
NON, ou SI si la question concernait une
affirmation fausse
JE NE SAIS PAS
si la réponse peut être vraie ou fausse
Le programme doit tourner jusqu’à ce que l’utilisateur l’arrête. Nous
pouvons supposer que le nombre des qualités élémentaires est 8 au plus, et que
l’input ne comporte pas plus de 10000 lignes. Nous ne faisons pas de différence
entre minuscule et majuscule. Nous prenons pour le caractère « espace »
tout caractère qui n’est pas une lettre et n’est pas un point d’interrogation.
Exemple (les réponses de la machine en italique):
|
SI
chien OU chat OU cheval ALORS poilu ET quatre pattes
COMPRIS
SI
berger allemand OU labrador ALORS chien
COMPRIS
SI
labrador ALORS quatre pattes
JE
SAIS
SI
moustique ALORS six pattes
COMPRIS
SI
berger allemand ALORS poilu?
OUI
EXISTE
labrador?
JE
NE SAIS PAS
EXISTE
labrador
COMPRIS
INEXISTANT
poilu ET chien?
SI
SI
quatre pattes ALORS NON six pattes
COMPRIS
EXISTE
cheval ET moustique?
NON
INEXISTANT
six pattes ET labrador?
INEXISTANT
EXISTE
quatre pattes OU six pattes ET NON poilu?
PAS
COMPRIS
|
Envoyer le code source du programme (s11.pas,
s11.c, ...)
(10 points)