この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

二重ループによる配列の変換(回転)を読み取る問題です。流れ図はループ1で i を0から7まで、ループ2で j を0から7まで回し、処理 a を全64要素について実行します。図2の配列 A と図3の配列 B を見比べると、A の上部に行方向へ広がっていたパターンが、B では右側の列方向に移っています。これは A を時計回りに90度回転した配置です。時計回り90度回転では、A の i 行 j 列の要素は B の「j 行 7−i 列」へ移動します。具体的な点で確認すると、A の左上隅 (0,0) は B の右上隅 (0,7) へ、A の右上隅 (0,7) は B の右下隅 (7,7) へ移ります。これを代入文で表すと B(j, 7−i) ← A(i, j) となり、エが正解です。この種の問題は、特徴的な位置(四隅や端のマス)を1〜2点選び、各選択肢の式に i、j の具体値を代入して、移動先が図3のパターンと一致するかを確かめるのが最も確実な解法です。選択肢はすべて回転・反転のバリエーションなので、代表的な変換式とセットで覚えておくと照合が速くなります。

なぜ他の選択肢は違うのか

選択肢 ア
B(7−i, 7−j) ← A(i, j) は行と列の両方を反転させる変換で、これは180度回転に相当します。A の左上隅 (0,0) は B の右下隅 (7,7) へ移動します。図3を見ると A 上部のパターンは B の右側(右上寄り)に移っており、右下に移る180度回転の配置とは一致しません。具体的な1点(例えば左上隅)の移動先を式に代入して確かめれば、すぐに不一致を確認できます。
選択肢 イ
B(7−j, i) ← A(i, j) は反時計回り(左回り)90度回転の変換式です。この式では A の左上隅 (0,0) は B の左下隅 (7,0) へ移動します。図3のパターンは右側に寄っているため、パターンが左下方向へ移る反時計回りの回転では一致しません。時計回りと反時計回りは式の形がよく似ている(添字の入れ替えと反転の位置が逆)ので、回転方向を具体点の代入で必ず確認することが大切です。
選択肢 ウ
B(i, 7−j) ← A(i, j) は行 i をそのままにして列だけを反転する変換で、左右反転(水平方向の鏡映)に相当します。この変換では A の上部にあったパターンは B でも上部に残ったまま左右だけが入れ替わります。図3ではパターンが上部から右側(列方向)へ移っているため、行の位置が変わらない単なる左右反転では図3の配置を説明できません。回転と反転の違いを区別する必要があります。

解くときのポイント

配列の回転・反転問題は四隅の1点(例: A(0,0))を各選択肢の式に代入し、移動先を図と照合する。時計回り90度=B(j, N−1−i)、反時計回り=B(N−1−j, i)、180度=両方反転、と整理して覚える。