
Le comptage en France : le point de vue d’un Belge
Conversion depuis le langage parlé : un algorithme naïf
Les Chinois ont adopté (voir le texte "En Chine, un système ancestral") une représentation des nombres au moyen d’une suite de paires (chiffre, puissance de 10). Nos nombres parlés ne fonctionnent pas autrement ! En effet, 2 018 se prononce « deux mille dix-huit », soit « 2 1 000 10 8 ».
On peut alors être tenté de programmer un algorithme capable de convertir de tels nombres parlés. En négligeant dans un premier temps conjonctions, liaisons et suffixes particuliers pour les dizaines, on constate que le cœur de l’algorithme est élémentaire, pour peu que le langage utilisé dispose de la récursivité. Voyons-en le principe :
Repérer le plus grand nombre, soit M, de la chaîne énoncée ;
Calculer tout ce qu’il y a « à gauche de M », soit g, en appliquant l’algorithme ;
Calculer tout ce qu’il y a « à droite de M », soit d, en appliquant l’algorithme ;
Renvoyer g × M + d.
Les conditions d’arrêt de la récursivité sont :
S’il n’y a qu’un nombre, le renvoyer ;
S’il n’y en a aucun, renvoyer l’élément neutre de l’opération, 1 (pour la multiplication)
ou 0 (pour l’addition).
Difficile d’imaginer plus simple…
L’efficacité de l’algorithme naïf !
Essayons d’approfondir l’algorithme naïf présenté ci-contre. De manière surprenante, au moment de s’attaquer aux cas particuliers comme 70, 80, 90, on constate alors que l’algorithme ainsi défini traite déjà ces cas, sans qu’il soit utile d’ajouter aucune autre instruction ! Déroulons l’algorithme sur un exemple. Prenons l’entier 1 789, qui se lit « 1 000 7 100 4 20 9 » ; M est alors égal à 1 000. Il vient successivement :
1 789
L’algorithme fonctionne également si l’on lit « dix sept cent quatre-vingt-neuf », ce qui laisse supposer qu’il doit d’une certaine manière « s’approcher » de la façon dont nous nous représentons les nombres mentalement.
Enfin, le même algorithme peut être utilisé pour les chiffres romains, à condition de remplacer la multiplication par la soustraction et chaque lettre par sa valeur numérique… À vous de vous en emparer !
Lire la suite gratuitement