第2回 ChatGPTは、共通テストの「情報」が解けるのか? その前に問題がおかしくないかい?!?!?(え?w)
はてさて、前回の続きで、めげずに(?)共通テストの「情報」の問題をChatGPTに解かせてみましょう!! っていうか、なんか、いろいろ考えてたら、そもそも、問題そのものが、おかしいのではないか?と思えるところが!?!?!? うーん・・・。
あ、前回を読んでない人は、こちらを。
前回は、第1問の問2までやったので、問3から。
余談ですが、この「第1問」って分類、よくわからない。この後、第2問、第3問、第4問まであるのですが、なんの数字?? この中にさらに問があって、そこもバラバラだったりします。マジわからんです。
なんとなーーーく、邪推すると、ここで切り分けて、問題を作る先生に依頼してるのかなぁ・・・という、「出題側」の都合であって、受験する側には、なんの意味ももたない「情報」だと思います。
そもそも、説明がないんだから、「無駄な情報」。言い換えれば、思考を阻害するための情報であって、惑わせようとしてるのかぁ??とか思ったりwww
気を取り直して・・・w
第1問
問3
チェックデジットの問題ですね。
チェックデジットというのは、デジタル情報を伝えた後に、間違いがないかチェックするための補足情報。
これ、会話でも意識してると、伝達ミスが少なくなるので、便利なんですよ。
例えば、上司から部下に質問された場合をみてみましょう。
「明日の会合は、誰が来るんだっけ?」
「えっと・・・
たかぎさん、かとうさん、ささきさん、みなさん、4名ですね。」
「3名じゃなくて、4名?」
「はい」
「確認だけど、たかぎ、かとう、ささきの3名じゃないの?」
「みなさんで、4名です。」
「私を入れて4名?」
「いえ、そうなると5名です。」
「よくわからないなぁ・・・。もう一度、参加者の名前だけ教えて」
「たかぎさん、かとうさん、ささきさん、みなさんです」
「あー! みなも参加するんだね!」
これ、最初に「4名」というチェックデータを言っていなかったら、上司は3名だと思ってしまいます。
このようなことを防ぐのがチェックデジット。
0と1のコンピュータの世界であっても、機器のトラブルや電圧の変動などの要因で、データが誤って伝えられることがあります。その場合に、チェックデジットをつけておくと、ある程度まで間違っているのか、正しいのか受け取っと側で確認できるのです。
一覧表とかで、行に番号を打ち込んだり、縦と横の数字の合計を入れるとかも、途中の項目や数値に間違いがないか(書き間違いや、後から書き換えなどがないか)を確認するためのものになっています。
さて、この問題では、非常にシンプルな2つの方法について書かれています。
まず、生成方法Aですが、めちゃくちゃシンプルな方法。単純に各桁を足し合わせて、10で割ったあまりを、さらに10から引く。
「22609」の場合
2+2+6+0+9=19
19÷10=1 あまり 9
10ー9=1
で、1がチェックデジット。つまり、先の数字に加えて、「226091」になります。
では、生成方法Bだけを見てみましょう。
5桁のうち、奇数桁を3倍し、偶数桁はそのままの数値で合計を出します。
「22609」の場合を計算するので、
2x3+2+6x3+0+9x3=53
この合計を10で割ったあまりを、10から引いた数値がチェックデジットになります。
53÷10=5 あまり 3
10ー3=7
で、「キ」は、7。
そこで、最初の5桁の数字にチェックデジットを加えて「226097」になります。この6桁を、例えばID番号として利用するのですね。
問題は、生成Aでは検出できない(つまりチェックデジットが変化しない)が、生成Bでは検出できることがある(つまりチェックデジットが変化する場合がある)となるのは、どういう場合なのかを考えます。
では、選択肢をみてみましょう。
チェックデジットは、合計数値の10で割った「あまり」をまた10から引くということになっていますが、確認する上では、「あまり」、つまりは、合計数値の一桁目だけ見ていればOKです。
それを踏まえて、それぞれの解答群を確認してみましょう。
0「奇数桁の数字を二つ間違える」は、奇数行の数字を2か所、違うものにしたら、どちらも合計の一桁目は変わってしまうので、両方で気が付きます。
なので、生成Aでも生成Bでも同じ結果になり、この0は回答ではないです。
次に、1「連続する二つの桁の数字をそれぞれ間違える」を考えてみます。
これは生成Aも生成Bも、同じようにチェックデジットが変化します。とうことで、この1も違う。
では、2「奇数行のうちの二つの桁の数字の順序を逆にする」を見てみましょう。
これは、どちらも変化がありません。つまり、生成Aでも生成Bでも変化はわかりません。ということで、これも違います。
最後の3「連続する二つの桁の数字の順序を逆にする」はどうでしょうか?
というか、最後の一つなので、これしかないのですがwww
このように、生成Aでは、単純な足し算なので、変化しないのですが、生成Bだと、違ってきます。つまり、「生成Aでは検出できないけれど、生成Bでは検出できる場合がある」に該当します! ということで、3が正解になります。
では、ここで、ChatGPTの答えを見てみましょう。
ということで、ChatGPTも正しく回答しました!
ちょっと待て! 本当にそうか?
最初の私の解説ですが、疑って読んでみてくださいねw
実は、かなり怪しいことを回答していますwww
というか、「受験生であれば、こう考えるべき」という説明になっていることを見抜けているでしょうか?
実際のプログラムの設計仕様書として考えると、ダメな問題になっていることに気が付いてください。下記の文章には、曖昧な部分があって、正しい回答が出せないように思うのですよね・・・・
プログラムを設計する上では、曖昧なところがあると、読み手の解釈によって条件が変わってしまい、それが大きなトラブルになります。
私が気になっているのは・・・
「連続する二つの桁の数字をそれぞれ間違える」は、「連続する二つの桁の数字の順序を逆にする」を内包している、つまり、「間違える」の中に「順序を逆にする」は含まれるんじゃないの??って思ってしまったのですね。
もう少し具体的にみていきましょう。
連続する二つの桁の数字をそれぞれ間違えるってことは、下記のように、▲や■になるということです。
単に「間違う」としか記載されていないので、最初の数字以外であれば、どんな数字でもOKなはずです。
なので、たまたま、下記のようになっても、「間違った」ことになります。
あれ? ちょっと、待ってください! これって、「連続する二つの桁の数字の順序を逆にする」と同じですよね?
ということは、1でも3でも正しいってことになりませんかね??
どちらを選んでも正しい?????
ところが、ですよ!!
これは、大問題だ! 誰も何も言わないなんて、おかしいだろ! 試験問題が間違っている、出題がおかしい!!(怒)
って、なりかけたのですが、そこは、さすがの共通テストです。最初の文言に、こう書いてありました・・・・
むむむむむ・・・・・ こっ、これが「情報」の真髄なのかぁ・・・www
P.S.
まだまだ「情報」の問題はあるのに、ぜんぜん、進まねーwwww