二次元配列の回転変換

図2を図3へ移す対応は行列を時計回りに回転する$B(j,7-i)\leftarrow A(i,j)$なので、エです。 時計回り90度回転では、元の行番号$i$が新しい列位置$7-i$に、元の列番号$j$が新しい行位置$j$に対応します。添字が0~7であるため反転位置は$7-i$です。 元要素$A(i,j)$の行$i$を反転して新しい列$7-i$にする。 元の列$j$を新しい行$j$にする。 よって$B(j,7-i)\leftarrow A(i,j)$となり、エである。 図の例では、A の1行目(青)が B の一番右の列に、A の2行目の先頭(赤)が B の右から2列目の先頭に移っています。8×8 の配列(添字0〜7)では、この「右から i 番目」が 7−i 列になります。

配列AAが図2の状態のとき,図1の流れ図を実行すると,配列BBが図3の状態になった。図1のaに入れる操作はどれか。ここで,配列AA,Bの要素をそれぞれ A(i,j)A(i,j),B(i,j)B(i,j) とする。

問題画像
出典令和元年度 秋期 基本情報技術者試験 午前 問9
ア
B(7−i,7−j)←A(i,j)B(7-i,7-j)\leftarrow A(i,j)
イ
B(7−j,i)←A(i,j)B(7-j,i)\leftarrow A(i,j)
ウ
B(i,7−j)←A(i,j)B(i,7-j)\leftarrow A(i,j)
エ
B(j,7−i)←A(i,j)B(j,7-i)\leftarrow A(i,j)