Luhn

Luhn

Moyen

Introduction

À la Global Verification Authority, on vient de te confier une mission cruciale. Dans toute la ville, des achats en ligne aux connexions sécurisées, d'innombrables opérations reposent sur l'exactitude d'identifiants numériques comme les numéros de carte bancaire, les numéros de compte bancaire, les codes de transaction et les identifiants de suivi. L'algorithme de Luhn est une formule de somme de contrôle simple qui sert à garantir que ces numéros sont valides et exempts d'erreurs.

Un lot d'identifiants vient d'arriver sur ton bureau. Tous doivent réussir le test de Luhn pour être considérés comme légitimes. Si l'un d'eux échoue, il sera signalé comme invalide, ce qui permet d'éviter les erreurs ou les fraudes, comme des transactions erronées ou des accès non autorisés.

Peux-tu faire en sorte que tout soit fait correctement ? L'intégrité de nombreux services dépend de toi.

Instructions

Détermine si un numéro de carte bancaire est valide selon la formule de Luhn.

Le numéro sera fourni sous la forme d'une string.

Valider un nombre

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.

Exemple 1 : numéro de carte bancaire valide

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

4539 3195 0343 6467
↑ ↑  ↑ ↑  ↑ ↑  ↑ ↑  (double these)

Si le double d'un chiffre donne un nombre supérieur à 9, on soustrait 9 au produit. Voici le résultat de nos doublements :

8569 6195 0383 3437

Additionne ensuite 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 nombre est valide. Ce nombre est valide !

Exemple 2 : numéro de carte bancaire invalide

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 nombre n'est pas valide.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Scala Exercism

Prêt à commencer Luhn ?

Inscris-toi sur Exercism pour apprendre et maîtriser Scala avec 95 exercices, et un vrai mentorat humain, le tout gratuitement.

Analyse approfondie de Luhn !

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 !