Licence Informatique 3 e année Programmation Logique
TD2 : Arithmétique - Listes
1 Entiers naturels
On définit les entiers de la façon suivante : 0 est un entier, le suivant d’un entier X (noté s(X)) est un entier.
1. Écrire un prédicatnaturel(?atom)qui réussit si l’atome est un entier.
2. Écrire un prédicatsomme(+entier,+entier,-entier)qui réussit si le dernier entier est la somme des deux premiers.
3. Écrire un prédicatsoustraction(+entier,+entier,-entier) qui réussit si le dernier entier est la différence des deux premiers.
4. Écrire un prédicatmultiplication(+entier,+entier,-entier)qui réussit si le dernier entier est le produit des deux premiers.
2 Cryptographie
Le but de l’exercice est d’écrire un programme Prolog qui puisse résoudre des cryptogrammes du genre
SEND MORE
———–
MONEY
1. Écrire un prédicatchiffre(?atom)qui réussit si l’atome est un chiffre (de 0 à 9).
2. Écrire un prédicatchiffres(?list)qui réussit si la liste ne contient que des chiffres.
3. Écrire un prédicatdifferents(?list) qui réussit si la liste ne contient que des éléments différents.
4. Écrire un prédicatcrypto(?list) qui réussit si la liste contient les chiffres correspondant aux lettres du cryptogramme et si ces chiffres vérifie la relation.
3 Préfixe d’une liste
Écrire un prédicat qui réussit si une liste est le préfixe d’une autre.
1
4 Ajout d’éléments dans une liste
Écrire des prédicats permettant de : 1. ajouter un élément en tête d’une liste 2. ajouter un élément en queue d’une liste
5 Suppression d’éléments dans une liste
Écrire des prédicats permettant de :
1. supprimer la première occurence d’un élément dans une liste 2. supprimer toutes les occurences d’un élément dans une liste
6 Tri de listes
Écrire des prédicats permettant de :
1. trier une liste d’entiers par la méthode du tri à bulle
2. trier une liste d’entiers par la méthode du tri rapide (quick sort)
2