Luhn

Luhn

Mittel

Anleitung

Bestimme für eine gegebene Zahl, ob sie nach der Luhn-Formel gültig ist.

Der Luhn-Algorithmus ist eine einfache Prüfsummenformel, mit der verschiedene Identifikationsnummern validiert werden, zum Beispiel Kreditkartennummern und kanadische Sozialversicherungsnummern.

Die Aufgabe besteht darin, zu prüfen, ob ein gegebener String gültig ist.

Eine Zahl validieren

Strings mit einer Länge von 1 oder weniger sind nicht gültig. Leerzeichen sind in der Eingabe erlaubt, sie sollten aber vor der Prüfung entfernt werden. Alle anderen Zeichen, die keine Ziffern sind, sind nicht erlaubt.

Beispiel 1: gültige Kreditkartennummer

4539 3195 0343 6467

Der erste Schritt des Luhn-Algorithmus besteht darin, jede zweite Ziffer zu verdoppeln, beginnend von rechts. Wir verdoppeln

4_3_ 3_9_ 0_4_ 6_6_

Ergibt das Verdoppeln einer Zahl eine Zahl größer als 9, dann ziehe 9 vom Produkt ab. Die Ergebnisse unserer Verdopplung:

8569 6195 0383 3437

Dann addiere alle Ziffern:

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

Wenn die Summe ohne Rest durch 10 teilbar ist, dann ist die Zahl gültig. Diese Zahl ist gültig!

Beispiel 2: ungültige Kreditkartennummer

8273 1232 7352 0569

Verdopple die zweiten Ziffern, beginnend von rechts

7253 2262 5312 0539

Addiere die Ziffern

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

57 ist nicht ohne Rest durch 10 teilbar, also ist diese Zahl nicht gültig.

Hinweis

Lies die Anleitung sorgfältig: Wenn du sie nur überfliegst, könntest du wichtige Details zur Richtung übersehen.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Pharo Exercism

Bereit, mit Luhn zu starten?

Melde dich bei Exercism an, um Pharo mit 50 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.

Tauche tiefer in Luhn ein!

Wir erkunden 8 verschiedene Versionen von Luhn, beginnen mit einer sehr aufgeräumten Ruby-Implementierung, schauen uns einige imperative und funktionale Ansätze an und landen schließlich bei einer SQLite-Version, die Erik und Jeremy nur mit einiger Mühe entschlüsseln konnten!