アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20201213 実施分 問8
配列 A が図 2 の状態のとき,図 1 の流れ図を実行すると,配列 B が図 3 の状態になった。図 1 の a に入れる操作はどれか。ここで,配列 A,B の要素をそれぞれ A (i, j),B (i, j) とする。
図1 流れ図: 開始 → ループ1「i : 0, 1, 7(注)」→ ループ2「j : 0, 1, 7(注)」→ 処理 a → ループ2(端)→ ループ1(端)→ 終了。(注)ループ端の繰返し指定は,変数名:初期値,増分,終値 を示す。
図2 配列 A の状態(8×8,行 i=0〜7(縦,下向き),列 j=0〜7(横)。* の位置): i=0: j=1,2,3,4,5,6 / i=1: j=1 / i=2: j=1 / i=3: j=1,2,3,4 / i=4: j=1 / i=5: j=1 / i=6: j=1 / i=7: j=1
図3 実行後の配列 B の状態(同形式): i=0: なし / i=1: j=0,1,2,3,4,5,6,7 / i=2: j=4,7 / i=3: j=4,7 / i=4: j=4,7 / i=5: j=7 / i=6: j=7 / i=7: なし
- ア B (7-i, 7-j) ← A (i, j)
- イ B (7-j, i) ← A (i, j)
- ウ B (i, 7-j) ← A (i, j)
- エ B (j, 7-i) ← A (i, j)
出典:基本情報技術者試験 科目A免除 修了試験 20201213 実施分 問8
答えと解説を見る
正解:エ
覚える知識
2次元配列の回転・転置操作の読解
8×8配列の時計回り90度回転は、B(j, 7−i) ← A(i, j) と表せる。
この問題で必要なこと
A(i,j) の移動先を図2と図3の*の位置から調べ、90度回転に相当する B(j,7−i) への代入だと特定する。
ひっかけ
反時計回りや上下左右反転の添字式との取り違え。
この知識の出題:本試験系 2 回・免除試験 2 回(公開問題での観測値)