introduzione
In questa sfida il tuo compito è generare il codice ISBN-10 per i libri dato il suo codice ISBN-13, supponendo che esista un codice del genere. Tale codice ISBN-13 è composto da più parti separate da -
:
978-GG-PPPP-TTT-C
Le lettere G
(gruppo), P
(editore), T
(titolo) e C
(checksum) rappresentano tutte una cifra. Ai fini di questa sfida, il raggruppamento e il calcolo di C
(vedi questa sfida ) non sono interessanti e abbandoneremo tutti i trattini per semplificare questo compito.
Un numero ISBN-10 ha un layout molto simile:
GG-PPPP-TTT-c
Le lettere G
, P
e T
sono le stesse del codice ISBN a 13 cifre, tuttavia c
sono diverse (e vengono calcolate utilizzando un algoritmo diverso). La cifra c
viene scelta in modo tale che valga la seguente equivalenza (cifre in ordine):
10*G + 9*G + 8*P + … + 3*T + 2*T + 1*c = 0 (mod 11)
Esempio
Consideriamo il numero ISBN 9780345391803
: per ottenere il suo codice ISBN-10 corrispondente abbiamo semplicemente cadere il leader 978
e il checksum 3
cedimento 034539180
.
Successivamente è necessario calcolare il nuovo checksum:
10*0 + 9*3 + 8*4 + 7*5 + 6*3 + 5*9 + 4*1 + 3*8 + 2*0 = 185
Il prossimo numero divisibile per 11
è 187
, quindi il nuovo checksum è 2
e quindi il codice ISBN-10 risultante 0345391802
.
Regole
- Il tuo input avrà sempre un corrispondente codice ISBN-10 (cioè è lungo esattamente 13 cifre e inizia con
978
) - L'input non deve necessariamente essere un codice ISBN-13 valido (ad es.
9780000000002
) - Hai la garanzia che il codice ISBN risultante non finirà con
X
- È possibile accettare input come numero intero o stringa (con o senza trattini), tuttavia non è consentito un elenco precompilato di cifre
- L'output deve essere un numero ISBN-10 valido (con o senza trattini)
- L'output può essere un numero intero o una stringa (di nuovo nessun elenco di cifre)
Casi test
9780000000002 -> 0000000000
9780201882957 -> 0201882957
9781420951301 -> 1420951300
9780452284234 -> 0452284236
9781292101767 -> 1292101768
9780345391803 -> 0345391802
Nota gli zeri iniziali!
0-684-84328-5
e99921-58-10-7
, la prima parte (0
e99921
rispettivamente) è il gruppo di registrazione, la seconda parte è l'editore e così via.