ISBN検証

ISBN検証

中級

説明

ISBN-10の検証プロセスは、書籍の識別番号を検証するために使われます。これらの番号には通常ハイフンが含まれ、3-598-21508-8のような形式をしています。

ISBN

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をもとに生成してみましょう。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Delphi Pascal Exercism

ISBN検証を始める準備はできましたか?

Exercismに登録すれば、76個の演習、そして本物の人間によるメンタリングとともに、Delphi Pascalを学んでマスターできます。すべて無料です。