Étant donné un numéro, détermine s'il est valide ou non selon la formule de Luhn.
L'algorithme de Luhn est une formule de somme de contrôle simple, utilisée pour valider divers numéros d'identification, comme les numéros de carte bancaire ou les numéros d'assurance sociale canadiens.
La tâche consiste à vérifier si une string donnée est valide.
Les strings de longueur 1 ou moins ne sont pas valides. Les espaces sont autorisés dans l'entrée, mais il faut les retirer avant de vérifier. Tous les autres caractères qui ne sont pas des chiffres sont interdits.
4539 3195 0343 6467
La première étape de l'algorithme de Luhn consiste à doubler un chiffre sur deux, en partant de la droite. On va donc doubler
4_3_ 3_9_ 0_4_ 6_6_
Si doubler un chiffre donne un nombre supérieur à 9, il faut soustraire 9 au produit. Voici le résultat de ces doublements :
8569 6195 0383 3437
Ensuite, on additionne tous les chiffres :
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
Si la somme est divisible par 10, alors le numéro est valide. Ce numéro est valide !
8273 1232 7352 0569
Double un chiffre sur deux, en partant de la droite
7253 2262 5312 0539
Additionne les chiffres
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 n'est pas divisible par 10, donc ce numéro n'est pas valide.
Lis les instructions attentivement : si tu les survoles, tu risques de manquer des détails importants sur la direction.
Inscris-toi sur Exercism pour apprendre et maîtriser Pharo avec 50 exercices, et un vrai mentorat humain, le tout gratuitement.
On explore 8 versions différentes de Luhn, en commençant par une implémentation Ruby très propre, en explorant quelques approches impératives et fonctionnelles, et en terminant par une version SQLite qu'Erik et Jeremy ont eu du mal à déchiffrer !