Luhn

Luhn

Közepes

Utasítások

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.

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

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.

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

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!

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

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.

Megjegyzés

Olvasd el figyelmesen az utasításokat. Ha csak átfutod, lemaradhatsz néhány fontos részletről az irányt illetően.

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

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

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Pharo nyelvet 50 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!