Module: AP コンピュータ サイエンス セクション II 2015


Problem

2/4

逆行

Problem

この質問は、1 次元配列と 2 次元配列を操作します。パート (a) では、1 次元配列の要素を反転するメソッドを記述します。パート (b) と (c) では、2 次元配列の要素を反転するメソッドを記述します。

(a) 静的な reverseArray メソッドを含む次の不完全な ArrayUtil クラスを考えてみましょう。
ArrayUtil メソッド reverseArray を記述します。たとえば、arr が配列 {2,7,5,1,0} の場合、reverseArray を呼び出すと arr が {0,1,5,7,2} に変更されます。下記のメソッド reverseArray を完成させてください。

/** 配列 arr の要素を反転
* 前提条件: arr.length > 0.
* 事後条件: arr の要素が逆になっています。
* @param arr 操作する配列
*/
public static 無効 reverseArray(int[] arr style="color:#666666">)


b) 整数の 2 次元行列を表す次の不完全な Matrix クラスを考えます。行列に少なくとも 1 つの整数が含まれていると仮定します。
Matrix メソッド reverseAllRows を記述します。このメソッドは、各行の要素を逆にします。たとえば、mat1 が Matrix オブジェクトを参照する場合、mat1.reverseAllRows() を呼び出すと、以下に示すように行列が変更されます。

reverseAllRows を記述するには、part(a) で reverseArray メソッドを呼び出す必要があります。パート (a) の記述に関係なく、reverseArray が正しく機能すると仮定します。下記のメソッド reverseAllRows を完成させてください。

/** mat の各行の要素を反転します。
* 事後条件: 各行の要素が逆になっています。
*/
public void reverseAllRows()


 c) Matrix メソッド reverseMatrix を記述します。このメソッドは、行列の要素を逆にして、行列の最終要素を行優先順で読み取った場合に、下隅から右から左に上に向かって読み取った場合の元の要素と同じになるようにします。ここでも mat1 を Matrix オブジェクトへの参照とします。 mat1.reverseMatrix() を呼び出すと、以下に示すように行列が変更されます。


reverseMatrix を記述する場合は、(b) の部分で reverseAllRows メソッドを呼び出す必要があります。パート (b) の記述に関係なく、reverseAllRows が正しく機能すると仮定します。下記のメソッド reverseMatrix を完成させてください。
 
/** mat の要素を反転します。
*事後条件:
* - 行優先順で読み取ったときの mat の最終要素
* 読み取り時にマットの元の要素と同じ
* 下隅から、右から左へ、上へ。
* - mat[0][0] には、元々最後の要素だったものが含まれています。
* - mat[mat.length-1][mat[0].length-1] には以前のものが含まれています
* 最初の要素
*/
public void reverseMatrix()