Mit dem ISBN-10-Prüfverfahren lassen sich Buchidentifikationsnummern validieren.
Normalerweise enthalten sie Bindestriche und sehen so aus: 3-598-21508-8
Das ISBN-10-Format besteht aus 9 Ziffern (0 bis 9) plus einem Prüfzeichen (entweder eine Ziffer oder ausschließlich ein X). Ist das Prüfzeichen ein X, steht es für den Wert '10'. Die Nummern können mit oder ohne Bindestriche angegeben werden, und ihre Gültigkeit lässt sich mit der folgenden Formel prüfen:
(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
Ist das Ergebnis 0, ist die ISBN-10 gültig, andernfalls ist sie ungültig.
Nehmen wir die ISBN-10 3-598-21508-8.
Wir setzen sie in die Formel ein und erhalten:
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
Da das Ergebnis 0 ist, ist unsere ISBN damit gültig.
Das Programm erhält einen String und soll prüfen, ob der übergebene String eine gültige ISBN-10 ist. Um das umzusetzen, musst du dir Gedanken darüber machen, wie der String vor der Berechnung der Prüfziffer der ISBN aufbereitet und zerlegt wird.
Das Programm soll ISBN-10 sowohl mit als auch ohne trennende Bindestriche prüfen können.
In manchen Sprachen kann die Umwandlung von Strings in Zahlen knifflig sein.
Jetzt wird es noch kniffliger, denn die Prüfziffer einer ISBN-10 kann ein 'X' sein (das für '10' steht).
Zum Beispiel ist 3-598-21507-X eine gültige ISBN-10.
Wenn du dich an diesen Aufgaben versuchst, schreib bitte eigene Tests dafür in deine Lösungsdatei!
Definiere ein String-Makro, sodass isbn"3-598-21507-X" == ISBN("3-598-21507-X").
Lass den Konstruktor auch ISBN-13-Nummern akzeptieren. Dieselbe ISBN soll unabhängig vom Format gleich sein: ISBN("1-234-56789-X") == ISBN("978-1-234-56789-7").
Definiere eine Funktion oder einen Iterator, um eine gültige ISBN zu erzeugen, vielleicht sogar ausgehend von einer gegebenen Start-ISBN.
Kannst du die ISBN als Ganzzahl statt als String speichern, und wäre das jemals eine gute Idee? Wenn du es tätest, könntest du die ISBN dann noch (inklusive Prüfziffer) als String ausgeben?
Melde dich bei Exercism an, um Julia mit 35 Konzepte128 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.