Luhn

Luhn

Közepes

Utasítások

Adott egy szám. Döntsd el, hogy a Luhn-formula szerint érvényes-e vagy sem.

A Luhn-algoritmus egy egyszerű ellenőrzőösszeg-formula, amelyet különféle azonosítószámok érvényesítésére használnak, például hitelkártyaszámokéra és a kanadai társadalombiztosítási számokéra.

A feladat annak ellenőrzése, hogy egy adott string érvényes-e.

Egy szám érvényesítése

Az 1 vagy annál rövidebb stringek nem érvényesek. A bemenetben megengedettek a szóközök, de az ellenőrzés előtt el kell távolítani őket. Minden egyéb, nem számjegyből álló karakter tilos.

1. példa: érvényes hitelkártyaszám

4539 3195 0343 6467

A Luhn-algoritmus első lépése, hogy minden második számjegyet megduplázunk, jobbról kezdve. Ezeket duplázzuk meg:

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

Ha a duplázás eredménye nagyobb, mint 9, akkor vonj ki 9-et a szorzatból. A duplázás eredménye:

8569 6195 0383 3437

Ezután add össze az összes számjegyet:

8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80

Ha az összeg maradék nélkül osztható 10-zel, akkor a szám érvényes. Ez a szám érvényes!

2. példa: érvénytelen hitelkártyaszám

8273 1232 7352 0569

Duplázd meg minden második számjegyet, jobbról kezdve

7253 2262 5312 0539

Add össze a számjegyeket

7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57

Az 57 nem osztható maradék nélkül 10-zel, tehát ez a szám nem érvényes.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Haskell Exercism

Készen állsz elkezdeni a(z) Luhn feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Haskell nyelvet 107 feladat segítségével, valódi emberi mentorálással, mindez ingyen.

Mélyelemzés: Luhn!

A Luhn 8 különböző változatát járjuk körbe: kezdjük egy nagyon letisztult Ruby-implementációval, megnézünk néhány imperatív és funkcionális megközelítést, végül egy SQLite-változattal zárunk, amelynek megfejtése Eriknek és Jeremynek is némi munkájába került!