ガジェット通信 GetNews

見たことのないものを見に行こう

第161回「今週のアルゴリズム:ISBNのチェックディジットを計算して!」正解者発表

DATE:
  • ガジェット通信 GetNewsを≫

「今週のアルゴリズム」とは

「今週のアルゴリズム」問題は、毎週火曜日にちょっとした問題を出題し、正解するとニックネームを掲載していくというシリーズ問題です。そして、正解した方全員に「たいへんよくできました」バッジも付与されます。

第161回は「今週のアルゴリズム:ISBNのチェックディジットを計算して!」の問題です。

問題文「第161回 今週のお題:ISBNのチェックディジットを計算して!」

第161回「今週のアルゴリズム:ISBNのチェックディジットを計算して!」正解者発表

入力ミスなどを防ぐため、チェックディジットがよく使われます。
代表的な例として、書籍を管理するときに使われるISBN(Wikipedia)があり、チェックディジットが使われています。

ISBNには、かつて使われていた「ISBN-10」と現在主に使われている「ISBN-13」があります。
最近出版されている書籍には両方が記載されていることが一般的で、ISBN-10も使用可能です。
現在、日本国内で出版されたものについては、チェックディジットを除いた部分にISBN-10とISBN-13で同じ値が使われています。
(ISBN-10は「ISBN4-ABCD-EFGH-X」、ISBN-13は「ISBN978-4-ABCD-EFGH-Y」という形で、ABCD-EFGHの部分は同じ、XとYがそれぞれのチェックディジット)

このABCD-EFGHがすべて異なる数字で構成され、ISBN-10とISBN-13のチェックディジットが同じ(X=Y)ものを調べることにします。
例えば、ABCD-EFGHの部分が「05192743」のものは、ISBN-10では「ISBN4-0519-2743-1」、ISBN-13では「ISBN978-4-0519-2743-1」となり、チェックディジットがともに1となります。

なお、ISBNの計算方法は以下の通りです。(Wikipediaより引用)

ISBN-10

「モジュラス11 ウェイト10-2」という計算法にて算出される。(チェックディジットを除いた左側の桁から10、9、8…2を掛けてそれらの和を取る。和を11で割って出た余りを11から引く)
ここで、例として ISBN4-10-109205-□ のチェックディジット(□部分)を求めてみる。

4×10 + 1×9 + 0×8 + 1×7 + 0×6 + 9×5 + 2×4 + 0×3 + 5×2
= 40 + 9 + 0 + 7 + 0 + 45 + 8 + 0 + 10
= 119
119 ÷ 11 = 10 あまり 9
11 – 9 = 2

よって、このISBNのチェックディジットは2である。なお、計算結果が10になった場合、10の代わりにX(アルファベットの大文字)を用いる。また、11になった場合は、0となる。

ISBN-13

「モジュラス10 ウェイト3・1(モジュラス10 ウェイト3)」という計算法にて算出される。(チェックディジットを除いた一番左側の桁から順に1、3、1、3…を掛けてそれらの和を取る。和を10で割って出た余りを10から引く。ただし、10で割って出た余りの下1桁が0の場合はチェック数字を0とする。)
ここで、例として ISBN 978-4-10-109205-□ のチェックディジット(□部分)を求めてみる。

9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3
= 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15
= 82
82 ÷ 10 = 8 あまり 2
10 – 2 = 8

よって、このISBNのチェックディジットは8である。

標準入力からチェックディジットが与えられるとき、チェックディジットがその値に一致するISBNの個数を標準出力に出力してください。
※日本国内で出版されるもののみを考えるため、ISBN-10では先頭が「4」、ISBN-13では先頭が「978-4」を固定とします。
 また、実際に書籍が存在するかどうかは問いません。

例えば、チェックディジットが「1」のとき、上記の条件をみたすものは14751通りあります。

【入出力サンプル】
標準入力
1

標準出力
14751

正解者

おめでとうございます!正解者のみなさんです。(新着順)

angel様
den256様
みけCAT様
GigaSlave様
haruya様
珠様
arborvitae666様
suno_tf様
ぴろう様
カニ戯(ry様
uafr_cs様
tktnhsj様
Yun様
AkiTek様
やまだやまもと様
schu50様
えちごやえちぜん様
ヨースケ様
gmk様
Mattsun様
ginneko様
にしむら様
yasuosaito13様
A/M様
scherzo2様
ssdcxbgte様
distancedsilhouette様
i-don様
strauss様
rw0020様
うにゃ様
おじけん様
れお様
atmarkatmark様
yudedako様
rotary-o様
suconv様
toku-mori様
todaemon様
ナガセ様
R修行中様
あしゅま様
quebrar様
C_4様
おおぐちかば様
hihi123様
SolidFromPhoto様
shoek様
Leonardone @ NEETSDKASU様
a992571様
ahh様
wx7890pack様
haka様
ryagi様
みかんず様
smz8110様
やまさん様
Hira0404様
cudjo様
Yasu.Hara.様
たどりん様
Count0様
ぴよぴよあとむ様
Azicore様
L.star様
tnakao様
chat様
HHeLiBeX様
act727様
舞葉様
ciel様

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。