`ArrayTester`

is #4 from the from the 2018 AP Computer Science A Free Response problems.

https://secure-media.collegeboard.org/ap/pdf/ap18-frq-computer-science-a.pdf

## Part (a) `getColumn`

method

```
public static int[] getColumn(int[][] arr2D, int c)
{
int[] column = new int[arr2D.length];
for(int i = 0; i < column.length; i++)
column[i] = arr2D[i][c];
return column;
}
```

## Part (b) `isLatin`

method

```
public static boolean isLatin(int[][] square)
{
if(containsDuplicates(square[0]))
return false;
for(int r = 1; r < square.length; r++)
if( ! hasAllValues(square[0], square[r]) )
return false;
for(int c = 0; c < square[0].length; c++)
if( ! hasAllValues(square[0], getColumn(square, c)))
return false;
return true;
}
```

A 2D array in Java is an array of 1D arrays. `square[0]`

stores a reference to the 1D array representing the first row of `square`

. `square[r]`

stores a reference to the 1D array representing row `r`

. See Treating a 2D array as an array of 1D arrays for additional details.

`hasAllValues`

method

This method was NOT required to be implemented on the Exam. It is provided in case anyone would like to test their code with it.

Note: The inner loop could be made more efficient by stopping at the first occurrence. I was targeting ease of implementation.

```
public static boolean hasAllValues(int[] arr1, int[] arr2)
{
for(int arr1Index = 0; arr1Index < arr1.length; arr1Index++)
{
boolean contains = false;
for(int arr2Index = 0; arr2Index < arr2.length; arr2Index++)
{
if(arr1[arr1Index] == arr2[arr2Index])
contains = true;
}
if( ! contains )
return false;
}
return true;
}
```

`containsDuplicates`

method

This method was NOT required to be implemented on the Exam. It is provided in case anyone would like to test their code with it.

```
public static boolean containsDuplicates(int[] arr)
{
for(int i = 0; i < arr.length; i++)
for(int j = i + 1; j < arr.length; j++)
if(arr[i] == arr[j])
return true;
return false;
}
```

## 2018 AP CS Exam Free Response Solutions

- FrogSimulation Free Response Solution
- WordPairList Free Response Solution
- CodeWordChecker Free Response Solution

## Additional 2D array resources

- Intro to 2D arrays
- 2D array exercises
- Mazer FR
- Droppy FR
- Flight FR
- MatrixManipulator exercise
- DeterminantFinder exercise