配列Aが図2の状態のとき,図1の流れ図を実行すると,配列Bが図3の状態になった。
図1のaに入れる操作はどれか。
ここで,配列A,Bの要素をそれぞれA(i,j),B(i,j)とする。
正答4
解説
正解は4です。
図2の配列Aと図3の配列Bの「*」の位置を対応させ、どの添字の変換で写っているかを調べます。
流れ図は、i、jをそれぞれ0から7まで動かして、配列Aの全要素を配列Bへ移す二重ループです。
図2の配列Aでは、j=1の列の全行(i=0〜7)、i=0の行のj=1〜6、i=3の行のj=1〜4に「*」があります。
図3の配列Bでは、i=1の行の全列(j=0〜7)、j=7の列のi=1〜6、j=4の列のi=1〜4に「*」があります。
Aの縦の線がBでは横の線になっているので、配列を時計回りに90度回転させた形です。
【選択肢別解説】
1:× B(7−i,7−j)←A(i,j)は180度回転です。
Aのj=1の列はBのj=6の列に移り、図3と一致しません。
2:× B(7−j,i)←A(i,j)は反時計回りの90度回転です。
Aのj=1の列はBのi=6の行に移り、図3のi=1の行と一致しません。
3:× B(i,7−j)←A(i,j)は左右反転です。
Aのj=1の列はBのj=6の列に移り、図3と一致しません。
4:○ B(j,7−i)←A(i,j)なら、Aのj=1の列の要素A(i,1)はB(1,7−i)に移り、Bのi=1の行全体になります。
A(0,j)はB(j,7)に移ってj=7の列のi=1〜6になり、A(3,j)はB(j,4)に移ってj=4の列のi=1〜4になります。
3本とも図3と一致します。
【ポイント】
n×nの配列を時計回りに90度回転する式はB(j,n−1−i)←A(i,j)です。
特徴的な1本の線(本問ではj=1の列)がどこへ移るかを追うと、候補を素早く絞れます。