問題

(出典:日本技術士会のホームページ 過去問題(第一次試験) 基礎科目 令和5年度)
コーチング対話解答
ツトムさんISBN番号は本の裏の値段の上などに書かれていますね。



そうですね。
その番号にどのような意味があるのかを知る問題にもなっています。
今回、最後の数字が問題になっていますが、
この数字は
チェックデジット
と呼ばれています。
これはどのような役割を持っていると思いますか?



情報システム系では、よく誤り検出として特別な数字を設定していますよね。
それですか?



その通りです。
誤入力を見つけるためなのです。
それでは問題を見ていきましょう。
規則の式はどうなっていますか。





a13+3a12+a11+3a10+a9+3a8+a7+3a6+a5+3a4+a3+3a2+a1≡0 (mod 10)
です。



問題として与えられたISBN-13の番号のa13は何ですか?



最初の数字なので「9」ですね。
それから右に行くにしたがって番号が下がっていき、
a1がXになっています。
このような問題の場合は、
とりあえず代入してみるのがいいですね。



その通りです。



9+3×7+8+3×4+1+3×0+3+3×3+4+3×1+9+3×4+X
= 91+X ≡ 0 ( mod 10 )
となりました。
mod関数は、(mod m)となっていた場合、
mで割った時の余りを返す関数ですね。
だから、91+Xを10で割って、余りが0ですから、
Xは9ですね。



そうですね。
91+9=100となり、それを10で割ると0ですからね。



答えは、⑤ ですね。



正解です。
この問題の関係式のことを合同式と呼びますよね。
a、bを整数、mを正の整数とする。「aをmで割った余り」と「bをmで割った余り」が等しいことを
a ≡ b (mod m)
と表す。



読み方は「a合同bモッドm」でしたね。
この問題の背景は、最初にも述べましたが、
誤り検出技術についてです。
バーコードやクレジットカードの番号などにも採用されています。



数字の羅列だと、入力時に間違いが起こりやすいですからね。
誤った入力をしたときにエラーが出てくれると、
入れ直すことができますので助かります。
でも、どうして一つ飛びに3倍するのでしょうか?
単純に足し算ではだめなのですか?





良い質問ですね。
もし単純に足し算をするなら、
隣り合う数字を順番を間違って入力してしまっても合計は変わりません。
ところが、一つ置きに1倍と3倍にしておくと、
この誤りを検出できます。



そういう工夫もされているのですね。


