Salut à tous !
Je sais, je ne passe plus souvent sur P2T et non,je ne fais pas mon retour actif sur le forum
Je passais juste vous proposer une petite enigme "informatique"
Je repense souvent à un certain post de Nicouj, très intéressant à plus d'un titre, sur la manipulation de listes avec un langage extrèmement réduit.
Voici l'énoncé: on dispose d'un langage informatique très restrictif, qui garde les mêmes spécifications que dans le premier problème, à savoir
- Le langage ne permet de ne définir qu'une seule fonction F.
- Cette unique fonction F ne peut avoir qu'un seul paramètre.
- Le langage ne permet pas de définir de variable auxiliaire.
- Il ne connait que deux type de données : les entiers et les listes d'entiers.
- Il est récursif
- Il fournit une conditionnelle if/then/else classique
- Il dispose d'opérations de base sur les listes :
* une fonction list.empty qui indique si "list" est vide,
* une fonction list.head qui retourne le premier élément de "list"
* une fonction list.tail qui retourne "list" privée de son premier élément
* une fonction A + list qui retourne une liste composée de l'entier A suivi du contenu de "list"
Attention: l'opération list + A n'est pas supportée
La question est la suivante : définir si possible une fonction F qui prend en paramètre une liste et qui retourne la même liste, mais inversée.
Par exemple:
F({1,2,3,4,6,5}) = {5,6,4,3,2,1}
Indice : Spoiler : [Afficher le message] F(F(liste))=?
Bon courage