見出し画像

 共通テスト「情報」最適化の原則 Vol.2 2024年度共通テスト「情報関係基礎」のプログラミング問題を見てみる(前編) 

『共通テスト「情報」最適化の原則』という名称(略称ピクト)で連載し始めてしまいましたが,ニーズがあれば連載いきたいと思います.なぜ略称がピクトかと言いますと,英語表記がPICTO :Principles of Informatics of the Common Test Optimization)だからなのと,私が開発・運営しているピクトグラミングに語呂をかけています.

第2回目となる今回は,2024年度共通テスト「情報関係基礎」のプログラミング問題を題材に,PICTOでプログラム問題を見てみたいと思います.共通テスト「情報」で採用されるのは「共通テスト用プログラム表記」で,「情報関係基礎」で使用されているDNCLは異なるものであることは留意ください.

2024年度共通テスト「情報関係基礎」のプログラミング問題をPICTOで解いてみる.

早速,問題を見ていきましょう.
第3問(問題冊子38ページから43ページ)がプログラミング,アルゴリズムの問題です.この問題を実際に解いてみたいと思います.

ある程度作問経験が豊富であると,このトピックならこういう問題になるだろうことは予想できます.問題のトピックは魔方陣でした.共通テスト「情報関係基礎」の問題フォーマットの制約を考慮すると,魔方陣のトピックで問題を作ることは微妙に思えます.次のような理由が主に挙げられます.

1.同じようなことを繰り返し問う設問群にならないか.
2.魔方陣作成方法を問う場合で,穴あけ形式の問題により対応するプログラムが完全なものでないと,その手順の説明を日本語で詳細にしなければならない.その結果,仕様やアルゴリズムについて日本語で記述された文章の読解力のみで解答できてしまうことがある.ただし,それを意図して作問されることもある.
3.魔方陣の作成方法は,それなりに知られており,それを体験したことがある人は,方法を理解する時間が省けて有利になる.
4. 想定されるプログラムが比較的単純なため,穴埋め問題形式の選択肢が作りにくく,その結果テクニックで正答が導けてしまう.

それでもこのトピックを採用した理由の一つに,0オリジンの配列を扱う問題を提示したいという思惑があったと考えられます.情報関係基礎の擬似コード仕様の場合,0オリジンか1オリジンかは明記されていません.ただ過去問題をみると1オリジンの方が圧倒的に多いです.例えば,n行目とかn文字目とかいうと普通1オリジンが普通であり,1オリジンだとn文字目の文字をMoji[n]と定義できます.一方で0オリジンにするとn文字目の文字がMoji[n-1]となり,このnとn-1の対応で混乱したり,(ケアレスミスで)誤答を選んでしまうということが発生するからです.ただ例外はいくつかあり,今回のようにトーラス状のグリッドを扱うようなテーマの場合,剰余を扱うので0オリジンで扱われる方が理解しやすいです.つまり,0オリジンにして0行目,0列目を定義した方がよりわかりやすく自然な処理となります.共通テスト「情報」で採用される共通テスト用プログラム表記では0オリジンとなっています.

問1

 まずいきなりですが,図2から見てみましょう.え!いきなりプログラムと解答群から見るんですか?と驚かれるかもしれませんが,とりあえず見てみましょう.

PICTO(Pseudocode for Informatics of the Common Test Optimizer)を使用して,プログラムを実行してみる場合,次のリンクをクリックしてください.
図2のプログラムをPICTOを使って開く


 ループ変数retu を使って変数waに[ウ]を繰り返し足しています.行04から06はもしretuを含まないのなら,
wa ← N × [ ウ ]
で良いはずです.なのに繰り返しを使用しているということは,[ウ]はretuが含まれている(1)か(2)です.さらに1回目の繰り返し(retuが0のとき)を考えてみると,(2)では,Mahou[-1, gyou] と配列要素の数値が負(-1)になってしまいます.よって[ウ]の正解は(1)です.

ー 共通テスト「情報」最適化の原則 ー
 繰り返し文は1回目の繰り返しを考えて当てはめてみる.

 同様に,図4と[ エ ]の選択肢をみてみます.プログラムと解答群は次の通りです.またいきなりプログラムと解答群だけですか?と驚かれていると思いますが,とりあえず見ていきましょう.

図4のプログラムをPICTOを使って開く

ー 共通テスト「情報」最適化の原則 ー
 繰り返し文は1回目の繰り返しを考えて当てはめてみる.

ー 共通テスト「情報」最適化の原則 ー
 繰り返し文は最後の繰り返しを考えて当てはめてみる.

上記2つを併用すると,解答の候補としては(0)(4)しかあり得ません.[エ][オ]は(0),(4)か(4),(0)かのいずれかですね.図4のキャプションと図3を見ると[エ][オ]は(0),(4)が正答のようです.図のキャプション文字列に問題を解く上でのショートカットが潜んでいることが多々あります.

問2

まずいきなりですが,図5,6及び図の解答群から見てみましょう.え!いきなり 図とプログラムと解答群から見るんですか?と驚かれるかもしれませんが,とりあえず見てみましょう.
PICTOを使用して,プログラムを実行してみる場合,次のリンクをクリックしてください.
図6のプログラムをPICTOを使って開く

図5の(a)から数値1が入っているのはx=1,y=2です.Nは3です.N=3のときも成立するはずですから当てはめましょう.解答群[カ][キ]の選択肢にN=3を当てはめると
(0) 0 (1) 3 (2) 2 (3) 4 (4) 1 (5)0
ですので[カ]は(4),[キ]は(2)ですね.普通は当てはめ対策としてNが3を代入したときに値が1や2になるものを複数作るもののですが,この問題ではそれもしていません.
図5の(b)から数値2が入っているのはx=2,y=0です.行04からループの初めのzが2で,10行目でMahou[x,y]←zとなっているのでループの1回目は2を入れるための処理です.[ケ]と[コ]が実行されるときのx,yはそれぞれ1,2ですから
[ケ]と[コ]の選択肢に当てはめます.
(0) 1-3=-2 (1) 1+3 = 4
(2) 1 % 3 = 3 (3) (1+1)%3 = 2
(4) 2-3 = -1 (5) 2 % 3 = 2
(6) (2+1)%3=0 (7) 1+2-1=2

[コ] は0にならないといけませんから(6) (y+1)%N です.さらに [ケ]は(3),(5),(7)の3通りが考えられますが,(6) (y+1)%Nとの対比を考えると(3) (x+1)%N が正しそうです.
ここまでで,zが1増えるごとに(トーラス状で)右下へ次の番号が書かれるのがわかります.図5の(d)では次の文字が一つ上でに書かれているので,これが,8行目の処理に相当すると考えられます.一つ上なので,[サ]は(5)y←y-1となります.

 魔方陣を作成する手順の部分は,実際には問題文で曖昧性が生じないように厳密に書かれるので,対応するプログラムが穴あけ方式だと,日本語読解問題になりがちで,本問も日本語で書かれている説明文を読めばいいですが,あえてそれなしに解くことをしてみました.例えば図6のプログラムが穴あけされていない完全なプログラムの場合,魔方陣を作成する手順の説明なしにプログラムの挙動を問うことができます.こういう形式の問題はページ制約の関係から情報関係基礎ではなかなか難しそうですが,共通テスト「情報」では出てくると思います.

ー 共通テスト「情報」最適化の原則 ー
 プログラムの説明に答えがまんま書かれていることがある.


 










この記事が気に入ったらサポートをしてみませんか?