ISBN-10の検証プロセスは、書籍の識別番号を検証するために使われます。これらの番号には通常ハイフンが含まれ、3-598-21508-8のような形式をしています。
ISBN-10の形式は、9桁の数字(0〜9)と1つのチェック文字(数字またはXのみ)で構成されます。チェック文字がXの場合、それは値'10'を表します。これらの番号は、ハイフン付きでもハイフンなしでも表記され、次の式で妥当性を確認できます。
(x1 * 10 + x2 * 9 + x3 * 8 + x4 * 7 + x5 * 6 + x6 * 5 + x7 * 4 + x8 * 3 + x9 * 2 + x10 * 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です。
入力のISBN-10から有効なISBN-13を生成します(さらに、そこから導いた検証器でもう一度検証してみてもよいでしょう)。
有効なISBNを生成します。できれば、与えられた開始ISBNをもとに生成してみましょう。