Binnen het ISBN-10 (International Standard Book Numbering) systeem dat tot eind 2006 gebruikt werd, kreeg elk boek een unieke code toegewezen die bestaat uit 10 cijfers. De eerste 9 daarvan geven informatie over het boek zelf, terwijl het laatste louter een controlecijfer is dat dient om foutieve ISBN-10 codes te detecteren.

ISBN
ISBN in tekst en streepjescode.

Als $$x_1, \ldots, x_9$$ de eerste 9 cijfers van een ISBN-10 code voorstellen, dan wordt het controlecijfer $$x_{10}$$ als volgt berekend: \[x_{10} = (x_1+ 2x_2+ 3x_3+ 4x_4+ 5x_5+ 6x_6+ 7x_7+ 8x_8+ 9x_9)\!\!\!\!\mod{11}\,\] Het controlecijfer $$x_{10}$$ kan m.a.w. de waarden 0 tot en met 10 aannemen. Als het controlecijfer gelijk is aan 10, dan wordt dit in de ISBN-10 code genoteerd als de letter X. Op die manier wordt het controlecijfer altijd door één enkel karakter voorgesteld.

Binnen het nieuwe ISBN-13 systeem krijgt elk boek een unieke code toegewezen die bestaat uit 13 cijfers. De eerste 12 daarvan geven informatie over het boek zelf, terwijl het laatste louter een controlecijfer is dat dient om foutieve ISBN-13 codes te detecteren. Als $$x_1, \ldots, x_{12}$$ de eerste 12 cijfers van een ISBN-13 code voorstellen, dan wordt het controlecijfer $$x_{13}$$ als volgt berekend: \[\begin{align} o &= x_1 + x_3 + x_5 + x_7 + x_9 + x_{11} \\ e &= x_2 + x_4 + x_6 + x_8 + x_{10} + x_{12} \\ x_{13} &= (10 - (o + 3e)\!\!\!\!\mod{10})\!\!\!\!\!\mod{10}\end{align}\] Het controlecijfer $$x_{13}$$ kan m.a.w. de waarden 0 tot en met 9 aannemen, waardoor ISBN-13 codes uitsluitend uit cijfers bestaan.

Een ISBN-13 code heeft een vaste structuur die heel wat informatie bevat. De eerste 3 cijfers zijn ofwel 978 ofwel 979. De codes die beginnen met 978 zijn boeken waarvoor er ook een ISBN-10 code is. Na de eerste 3 cijfers volgt er eerst een aanduiding van de landengroep waar dit boek is gepubliceerd. Deze aanduiding kan 1 tot en met 5 karakters bevatten. Daarna volgt een identificatie van de uitgever en het item. Het laatste karakter is, zoals reeds beschreven werd, een controlecijfer.

De ISBN-10 code van een boek met een ISBN-13 code kan eenvoudig berekend worden. Deze berekening is wel enkel geldig voor ISBN-13 codes die beginnen met de prefix 978:

Opgave

Definieer een klasse ISBN13 waarmee ISBN-13 codes kunnen voorgesteld worden. Deze klasse moet minstens de volgende methoden ondersteunen:

Voorbeeld

>>> code = ISBN13(9780136110675)
>>> print(code)
978-0-13611067-5
>>> code
ISBN13(9780136110675, 1)
>>> code.isgeldig()
True
>>> code.alsISBN10()
'0-13611067-3'

Pythia spreekt …

In onderstaande video legt Pythia uit hoe je deze opgave kunt aanpakken. Bekijk deze video als opstapje naar het oplossen van de oefeningen over objectgericht programmeren1.