Luhn

Luhn

Mittel

Einführung

Bei der Global Verification Authority wurde dir gerade ein wichtiger Auftrag anvertraut. In der ganzen Stadt, von Online-Käufen bis hin zu sicheren Logins, verlassen sich unzählige Vorgänge auf die Korrektheit numerischer Kennungen wie Kreditkartennummern, Bankkontonummern, Transaktionscodes und Tracking-IDs. Der Luhn-Algorithmus ist eine einfache Prüfsummenformel, mit der sich falsch eingegebene Zahlen erkennen lassen.

Gerade ist ein Stapel Kennungen auf deinem Schreibtisch eingetroffen. Alle müssen den Luhn-Test bestehen, damit sichergestellt ist, dass sie echt sind. Wenn eine durchfällt, wird sie als ungültig markiert. So lassen sich Fehler wie falsche Transaktionen oder fehlgeschlagene Kontoverifizierungen vermeiden.

Kannst du dafür sorgen, dass das richtig gemacht wird? Die Integrität vieler Dienste hängt von dir ab.

Anleitung

Bestimme, ob eine Zahl nach der Luhn-Formel gültig ist.

Die Zahl wird als String übergeben.

Eine Zahl validieren

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

Beispiele

Gültige Kreditkartennummer

Die zu prüfende Zahl ist 4539 3195 0343 6467.

Der erste Schritt des Luhn-Algorithmus besteht darin, am Ende der Zahl zu beginnen und jede zweite Ziffer zu verdoppeln. Du fängst bei der zweiten Ziffer von rechts an und gehst nach links.

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

Ergibt das Verdoppeln einer Ziffer einen Wert größer als 9, ziehen wir 9 von diesem Ergebnis ab. Wir erhalten:

8569 6195 0383 3437

Zum Schluss summieren wir alle Ziffern. Wenn die Summe ohne Rest durch 10 teilbar ist, ist die ursprüngliche Zahl gültig.

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

80 ist ohne Rest durch 10 teilbar, also ist die Zahl 4539 3195 0343 6467 gültig!

Ungültige kanadische Sozialversicherungsnummer (SIN)

Die zu prüfende Zahl ist 066 123 468.

Wir beginnen am Ende der Zahl und verdoppeln jede zweite Ziffer. Wir fangen bei der zweiten Ziffer von rechts an und gehen nach links.

066 123 478
 ↑  ↑ ↑  ↑  (double these)

Ergibt das Verdoppeln einer Ziffer einen Wert größer als 9, ziehen wir 9 von diesem Ergebnis ab. Wir erhalten:

036 226 458

Wir summieren die Ziffern:

0 + 3 + 6 + 2 + 2 + 6 + 4 + 5 + 8 = 36

36 ist nicht ohne Rest durch 10 teilbar, also ist die Zahl 066 123 478 nicht gültig!

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

Bereit, mit Luhn zu starten?

Melde dich bei Exercism an, um YAMLScript mit 60 Ü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!