Adott egy szám; határozd meg, hogy érvényes-e a Luhn-formula szerint.
A Luhn-algoritmus egy egyszerű ellenőrzőösszeg-képlet, amellyel különféle azonosító számokat lehet ellenőrizni, például hitelkártyaszámokat és kanadai társadalombiztosítási számokat.
A feladat annak ellenőrzése, hogy egy adott string érvényes-e.
Az 1 vagy annál rövidebb stringek nem érvényesek. A bemenetben lehetnek szóközök, de azokat az ellenőrzés előtt el kell távolítani. Minden más nem számjegy karakter nem megengedett.
4539 3195 0343 6467
A Luhn-algoritmus első lépése, hogy a jobb széltől kezdve minden második számjegyet megduplázunk. A következőket duplázzuk meg:
4_3_ 3_9_ 0_4_ 6_6_
Ha a duplázás eredménye nagyobb, mint 9, akkor a szorzatból vonj ki 9-et. 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!
8273 1232 7352 0569
Duplázd meg minden második számjegyet a jobb széltő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, ezért ez a szám nem érvényes.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Delphi Pascal nyelvet 76 feladat segítségével, valódi emberi mentorálással, mindez ingyen.
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!