## Monday, 29 August 2016

### Chapter 8 Exercise 23, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

*8.23 (Game: find the flipped cell) Suppose you are given a 6-by-6 matrix filled with 0s and 1s. All rows and all columns have an even number of 1s. Let the user flip one cell (i.e., flip from 1 to 0 or from 0 to 1) and write a program to find which cell was flipped. Your program should prompt the user to enter a 6-by-6 array with 0s and 1s and find the first row r and first column c where the even number of the 1s property is violated (i.e., the number of 1s is not even). The flipped cell is at (r, c). Here is a sample run:

Enter a 6-by-6 matrix row by row:
1 1 1 0 1 1
1 1 1 1 0 0
0 1 0 1 1 1
1 1 1 1 1 1
0 1 1 1 1 0
1 0 0 0 0 1
The flipped cell is at (0, 1)

import java.util.Scanner;

public class ProgrammingEx8_23 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a 6-by-6 matrix row by row:");
int[][] n = new int[6][6];

for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[i].length; j++) {
n[i][j] = input.nextInt();
}
}

int col = calCol(n);
int row = calRow(n);

if(col!=-1 && row != -1) {
System.out.println("The flipped cell is at (" +row + ","+ col +")");
}else {
System.out.println("There is no flipped cell.");
}

}

public static int calCol(int array[][]) {

int intSum = 0;

for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
intSum += array[j][i];
}

if (intSum % 2 != 0) {
return i;
}
}

return -1;

}

public static int calRow(int array[][]) {

int intSum = 0;

for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
intSum += array[i][j];
}

if (intSum % 2 != 0) {
return i;
}
}
return -1;

}

}