pengantar
Dalam tantangan ini, tugas Anda adalah membuat kode ISBN-10 untuk buku-buku yang diberi kode ISBN-13-nya, dengan asumsi kode tersebut ada. Kode ISBN-13 tersebut terdiri dari beberapa bagian yang dipisahkan oleh -
:
978-GG-PPPP-TTT-C
Huruf G
(grup), P
(penerbit), T
(judul) dan C
(checksum) semuanya merupakan satu digit. Untuk tujuan tantangan ini pengelompokan dan perhitungan C
(lihat tantangan ini ) tidak menarik dan kami akan membatalkan semua tanda hubung untuk membuat tugas ini lebih sederhana.
Nomor ISBN-10 memiliki tata letak yang sangat mirip:
GG-PPPP-TTT-c
Huruf-hurufnya G
, P
dan T
sama dengan ISBN 13 digit, namun c
berbeda (dan dihitung menggunakan algoritma yang berbeda). Digit c
dipilih sedemikian rupa sehingga kesetaraan berikut berlaku (angka berurutan):
10*G + 9*G + 8*P + … + 3*T + 2*T + 1*c = 0 (mod 11)
Contoh
Mari kita pertimbangkan nomor ISBN 9780345391803
: Untuk mendapatkan kode ISBN-10 yang sesuai, kita cukup meninggalkan yang terdepan 978
dan 3
menghasilkan checksum 034539180
.
Selanjutnya kita perlu menghitung checksum baru:
10*0 + 9*3 + 8*4 + 7*5 + 6*3 + 5*9 + 4*1 + 3*8 + 2*0 = 185
Angka berikutnya yang dapat dibagi 11
adalah 187
, sehingga checksum baru adalah 2
dan dengan demikian menghasilkan kode ISBN-10 0345391802
.
Aturan
- Input Anda akan selalu memiliki nomor ISBN-10 yang sesuai (mis. Panjangnya persis 13 digit dan dimulai dengan
978
) - Input tidak harus harus berupa ISBN-13 yang valid (mis.
9780000000002
) - Anda dijamin bahwa ISBN yang dihasilkan tidak akan berakhir dengan
X
- Anda dapat mengambil input sebagai integer atau string (dengan atau tanpa tanda hubung) namun daftar digit yang dihitung sebelumnya tidak diizinkan
- Output Anda harus nomor ISBN-10 yang valid (dengan atau tanpa tanda hubung)
- Output Anda mungkin bilangan bulat atau string (sekali lagi tidak ada daftar digit)
Testcases
9780000000002 -> 0000000000
9780201882957 -> 0201882957
9781420951301 -> 1420951300
9780452284234 -> 0452284236
9781292101767 -> 1292101768
9780345391803 -> 0345391802
Perhatikan nol terkemuka!
0-684-84328-5
dan99921-58-10-7
, bagian pertama (0
dan99921
masing - masing) adalah grup pendaftaran, bagian kedua adalah penerbit, dan sebagainya.