介绍
在此挑战中,您的任务是,在给定书号为ISBN-13的情况下,为书籍生成ISBN-10代码。这样的ISBN-13代码由以下几部分组成-
:
978-GG-PPPP-TTT-C
字母G
(组),P
(发布者),T
(标题)和C
(校验和)都代表一位数字。出于这一挑战的目的,分组和计算C
(参见挑战)并不有趣,我们将删除所有连字符以简化此任务。
ISBN-10号的布局非常相似:
GG-PPPP-TTT-c
字母G
,P
和T
中的相同的13位数字的ISBN,但是c
是不同的(并且使用不同的算法来计算)。c
选择数字的方式应使以下等价成立(数字顺序):
10*G + 9*G + 8*P + … + 3*T + 2*T + 1*c = 0 (mod 11)
例
让我们考虑一下ISBN编号9780345391803
:要获得其相应的ISBN-10代码,我们只需删除前导978
和校验和3
yield 034539180
。
接下来,我们需要计算新的校验和:
10*0 + 9*3 + 8*4 + 7*5 + 6*3 + 5*9 + 4*1 + 3*8 + 2*0 = 185
下一个可被整除的数字11
是187
,因此新的校验和为2
,因此得到的是ISBN-10代码0345391802
。
规则
- 您的输入将始终具有一个对应的ISBN-10数字(即,该数字正好是13位数字,以开头
978
) - 输入不一定是有效的ISBN-13(例如
9780000000002
) - 您可以确保得到的ISBN不会以
X
- 您可以将输入作为整数或字符串(带或不带连字符),但是不允许预先计算的数字列表
- 您的输出必须是有效的ISBN-10编号(带或不带连字符)
- 您的输出可能是整数或字符串(同样没有数字列表)
测试用例
9780000000002 -> 0000000000
9780201882957 -> 0201882957
9781420951301 -> 1420951300
9780452284234 -> 0452284236
9781292101767 -> 1292101768
9780345391803 -> 0345391802
注意前导零!
0-684-84328-5
和中99921-58-10-7
,第一部分(分别是0
和99921
)是注册组,第二部分是发布者,依此类推。