Projet 2006, groupe 1.1

Énoncé

On se propose de réaliser une implantation d'un système à la T9 de sélection de mots.

Un clavier de téléphone est constitué de dix touches numérotées de 0 à 9 et d'une touche d'espacement. La touche 1 concerne la ponctuation, les touches de 2 à 9 correspondent à des choix parmi trois à cinq lettres :

  1. Ponctuation ;
  2. a, b, c, ç, à ;
  3. d, e, f, é, è ;
  4. g, h, i ;
  5. j, k, l ;
  6. m, n, o ;
  7. p, q, r, s ;
  8. t, u, v, ù ;
  9. w, x, y, z.
À chaque appui sur une touche de 2 à 9, une lettre est choisie pour compléter le mot courant en fonction d'un dictionnaire interne.

Par exemple un premier appui sur 2 pourra retourner la lettre a. Un appui sur 4 pourra retourner le mot ai. Si on fait suivre par des appuis sur 2 puis 8 on pourra finalement obtenir le mot chat.

Les mots retournés sont en fait des préfixes valides de mots du dictionnaire interne dont les lettres sont accessibles depuis les mêmes touches.

La sélection comme mot courant d'un autre préfixe valide se fait en appuyant sur la touche 0. Les touches de ponctuation ou d'espacement valident le mot courant.

Première partie

Proposez une structure de type dico pour implanter le dictionnaire interne. Une idée peut être de considérer une structure arborescente factorisant les préfixes. Implantez les fonctions suivantes :

Implantez une fonction t prenant en entrée un dictionnaire, une liste de touches l et une touche n (choisissez et justifiez votre type des touches) et retournant la liste des préfixes valides pour la séquence de touches l@[n].

Prise en compte des touches 0, 1 et d'espacement

Les touches de ponctuation ou d'espacement retournent la liste qui ne contient que le premier élément de la liste des préfixes valides ; la touche 0 permet de faire passer en tête les autres préfixes valides de la liste (un par appui). Modifiez vos fonctions en conséquence.

Compteur

Implantez une fonction qui prend en entrée un dictionnaire, la liste des lettres d'un préfixe et qui retourne le nombre d'appuis nécessaires pour retourner la liste qui ne contient que ce préfixe.

Évolutions

Proposez des variantes des fonctions précédentes pour que le préfixe en tête de liste soit celui du mot le plus souvent validé.