『共通テスト「情報」最適化の原則』という名称(略称ピクト)で連載していきます.なぜ略称がピクトかと言いますと,英語表記がPICTO :Principles of Informatics of the Common Test Optimization)だからなのと,私が開発・運営しているピクトグラミングに語呂をかけています.
今回は,2023年度共通テスト「情報関係基礎」のプログラム問題を題材に,PICTO式でプログラム問題を見てみたいと思います.情報関係基礎の過去問は,情報処理学会情報入試委員会のサイト内の「情報関係基礎 アーカイブ」からダウンロードできます.こちらを参照ください.
共通テスト「情報」で採用されるのは「共通テスト用プログラム表記」で,「情報関係基礎」で使用されているDNCLとは異なるものであることは留意ください.
2023年度共通テスト「情報関係基礎」のプログラミング問題をPICTOで解いてみる.
早速,問題を見ていきましょう.
第3問(問題冊子36ページから41ページ)がプログラミング,アルゴリズムの問題です.この問題を実際に解いてみたいと思います.
問1
まずいきなりですが,図2から見てみましょう.え!いきなりプログラムと解答群から見るんですか?と驚かれるかもしれませんが,とりあえず見てみましょう.
Picthon (ピクトグラミング Python: テキスト型)を使用してプログラムを実行してみる場合は,次のリンクをクリックしてください.
図2のプログラムをPicthonを使って開く
まず空欄[カ]から.図2のキャプションに5mずつ降りるとあるのでおそらく(3) takasa-5 が正解だと思われます.
次に空欄[オ]です.(0)は常に偽,(3)は常に真になりますので誤答でしょう.(1)はtakasa-5以上takasa以下にRibon[i]がない.(2)はあるです.この時得点(score)が1足されます.ということは100%確定はできませんが,5m降りる間にRibonがあれば得点が1増えるという(2)が正解と思われます.また図のキャプションから,takasaの単位はmだろうとわかりますが,[オ]の選択肢からRibon[i] とtakasaを比較しているので,Ribonの配列も単位がmの値が格納されていることがわかります.
ー 共通テスト「情報」最適化の原則 ー
図表のキャプションにヒントあり!
ー 共通テスト「情報」最適化の原則 ー
解答群の選択肢が似ているなら当てはめてみる.
問2
いきなりですが,図3から見てみましょう.
Picthon (ピクトグラミング Python: テキスト型)を使用してプログラムを実行してみる場合は,次のリンクをクリックしてください.
図3のプログラムをPicthonを使って開く
問1からRibon[i]の配列要素は1オリジンで11要素あるようです.極端な例を考えてみたいと思います.問1で得点が最高点(11点)になるケースのRibon[i]を考えてみてください.いかがでしょう.例えば、
Ribon = [52, 47, 42, 37, 32, 27, 22, 17, 12, 7, 2] は満たしますね.
これまで11点だったものが「新しい動かし方」でよりスコアが低くなってしまうとは考えにくいです.このようなスコアの獲得を題材とした問題の場合,設問を経ることで,より方策やアルゴリズムが最適化していくというのが良くあるパターンです.すると[ ク ]は各繰り返しで常に成立しますので,この前提下で[ ケ ]のtakasaはどのように更新されていくでしょうか?
(0) 55,52,47,42,…
(1) 55,107,154,196,…
(2) 55, 3,-44,-86,…..
(3) 55, -3, 50 , -8
設問1はtakasaが55,50,45,40,35…. と5mおきに下がっていました.これと動かし方が大きく変わるとは考えにくく,おそらく正答は(0)である可能性が高いと推測することができます.
ただし,いずれもこれだけでは100%の確証をもって正答は導けません.以前解説した,試作問題2022や2024年度情報関係基礎の問3とは異なり,プログラムを見ただけでは解を絞ることができません.通常はこのような,先に提示したショートカットだけでは解けない問題が共通テストのプログラム問題では出題される(少なくても2025年から3,4年の間は)と考えるのが妥当です.では,(プログラムではない)図と表を見てみましょう.
この図1を見ると先ほどの[ ケ ]は,なおさら(0)が妥当に見えます.takasaが取りうる値がマイナスになったり55よりはるかに大きくなることはなさそうです.
問3
いきなりですが,図4から見てみましょう.また設問1,2と同様に極端な例を考えてみたいと思います.
Picthon (ピクトグラミング Python: テキスト型)を使用してプログラムを実行してみる場合は,次のリンクをクリックしてください.
図4のプログラムをPicthonを使って開く
新しくsaikouという変数と,Kokomadeという配列が出現しました.先ほどの設問1,2で獲得得点の最高は11で,どうも図1からリボンを触れるか取るかした個数のような気がします.まずは,行5の条件式が常に不成立と仮定して,[ チ ]の回答群を当てはめたときにKokomadeの配列の値がどうなるか考えてみましょう.
(0) 1,0,0,0,0,0,0,0,0,0,0
(1) 1,1,1,1,1,1,1,1,1,1,1
(2)1,2,3,4,5,6,7,8,9,10,11
(3) 1,1,1,1,1,1,1,1,1,1,1
次に行5の条件式が常に成立と仮定して[ チ ]の回答群を当てはめたときにKokomadeの配列の値がどうなるか考えてみましょう.
(0) 1,1,1,1,1,1,1,1,1,1,1
(1)1,2,3,4,5,6,7,8,9,10,11
(2)1,2,3,4,5,6,7,8,9,10,11
(3) 1,2,4,8,16,32,64,128,256,512,1024
(0)と(3)は論外,(1)と(2)なら変化があり常偽,Kokomade[11]が1と11になる(1)が正答のように思えます.このように条件文をとりあえず常に真,常に偽として処理してみるというのは一つ正答を推察する方法です.もちろんこれだけでは100%の確証をもって正答は導けません.
ー 共通テスト「情報」最適化の原則 ー
条件式を常に真,常に偽と仮定することで単純化して解いてみる.
普通問題というと先頭から順に読解していきたくなります.これは問題の形式に依存はするのですが,共通テスト「情報」のプログラム問題のケースでは,「プログラム(選択肢含む)」→ 「図表」 → 「自然言語による説明文」 の順に参照していくのが良さそうに見えます.実際の入試では,さすがにリード部分(問題の最初の一文や一文節)ぐらいは最初に読んで,問題が扱っているテーマを把握することは必須です.
日頃練習問題として解く場合は,「プログラム(選択肢含む)」→ 「図表」 → 「自然言語による説明文」の順に参照し,「プログラム(選択肢含む)」だけ,あるいは「プログラム(選択肢含む)」と「図表」だけで正答が定らない場合,どの情報が不足していて,自然言語による説明文にどのような説明が記述されているだろうとイメージしてみるというのが良さそうです.
ー 共通テスト「情報」最適化の原則 ー
日頃から,「プログラム(選択肢含む)」→ 「図表」 → 「自然言語による説明文」の順に参照し,あとどの情報があれば正答が確定できるかを想定しながら解く.
闇雲に問題を解き,なんかそれっぽく解説している解説文を読む.そんな問題の解き方,受験勉強の仕方から脱却しませんか?それは,教科「情報」が醸成しようとしている能力の一つな気もします.質の良い共通テストの教科「情報」の問題は,さまざまな記号体系(自然言語,図表,プログラム(選択肢含む))が融合した一種の芸術作品のようになると思います.ただ現状あまりそのような良質な問題がなく,質の悪い問題も少なくないので,教科「情報」の受験勉強は,それを見定める一種の活動とみなしても良いのかもしれません.それがもしかしたら,共通テストの問題を題材にいっそのこと「楽しんでしまおう」というヒントにもなると思います.