Quand j'étais enfant et que je voulais compter les billets d'un dollar dans mes économies, j'ai compté à voix haute:
un deux trois quatre cinq six sept huit neuf dix;
onze, douze, treize, quatorze, quinze, seize, dix-sept, dix-huit, dix-neuf, vingt;
vingt et un, vingt-deux, vingt-trois, vingt-quatre, vingt-cinq ...
Finalement, j'en ai eu marre de prononcer chacun de ces nombres à plusieurs syllabes. Étant d'esprit mathématique, j'ai créé une méthode de comptage beaucoup plus efficace:
un deux trois quatre cinq six sept huit neuf dix;
un, deux, trois, quatre, cinq, six, sept, huit, neuf, vingt;
un, deux, trois, quatre, cinq, six, sept, huit, neuf, trente ...
Comme vous pouvez le constater, je ne prononcerais que le ou les chiffres qui ont changé par rapport au numéro précédent. Cela présente l’avantage supplémentaire qu’il est considérablement plus répétitif que les noms anglais des nombres, et qu’il nécessite donc moins de réflexion pour le calcul.
Défi
Ecrivez un programme / fonction qui prend un entier positif et affiche / retourne comment je le compterais: c’est-à-dire le chiffre non nul le plus à droite et tous les zéros à la fin.
Exemples
1 1
2 2
10 10
11 1
29 9
30 30
99 9
100 100
119 9
120 20
200 200
409 9
1020 20
Une liste complète des cas de test ne devrait pas être nécessaire. C'est A274206 sur OEIS.
Règles
- Votre entrée doit théoriquement fonctionner pour tous les entiers positifs, en ignorant les problèmes de précision et de mémoire.
- L'entrée et la sortie doivent être en décimal.
- Vous pouvez choisir de prendre en entrée et / ou en sortie un nombre, une chaîne ou un tableau de chiffres.
- L'entrée est garantie d'être un entier positif. Votre entrée peut faire n'importe quoi pour une entrée invalide.
C'est le code-golf , donc le code le plus court en octets gagne.
[1,0,2,0]
->[2,0]
pour le dernier cas de test? (Je ne suis pas clair sur la phrase "tableau à élément unique").