ISBN-10 验证过程用于校验图书编号。这类编号通常包含连字符,看起来像:3-598-21508-8
ISBN-10 格式由 9 位数字(0 到 9)加上一个校验字符(只能是数字或 X)组成。如果校验字符是 X,它代表的值为 '10'。这些字符之间可以带连字符,也可以不带,其有效性可以用下面的公式检验:
(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
如果结果为 0,那么这个 ISBN-10 有效,否则无效。
我们以 ISBN-10 3-598-21508-8 为例。
把它代入公式,就得到:
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
结果为 0,说明这个 ISBN 是有效的。
给定一个字符串,程序应检查这个字符串是否为有效的 ISBN-10。 要实现这一点,需要先想清楚如何在计算 ISBN 校验位之前对字符串进行预处理和解析。
程序应能验证带分隔连字符和不带分隔连字符的 ISBN-10。
在某些编程语言中,把字符串转换成数字可能很棘手。
而现在更棘手,因为 ISBN-10 的校验位可能是 'X'(代表 '10')。
例如,3-598-21507-X 就是一个有效的 ISBN-10。