import java.util.Scanner;
public class TestEx16 {
public static void main(String[] args){
Ex16 ex = new Ex16();
int [] num1,num2;
System.out.println ("**********************************");
System.out.println ("*** Testing single question #1 ***");
System.out.println ("**********************************");
num1 = new int []{13,12,13,12,13,-5,-5,-5,8,8,-9};
printArray (num1);
boolean b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{23,-3,5,-3,5,7,7,7,9,9,-3};
printArray (num1);
b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{5,-6,3,5,-6,3,5,3,-6};
printArray (num1);
b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-13,9,-13,-7,-8,-8,9,-7,-13};
printArray (num1);
b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-3,-3,9,13,14,14,14,15,15,14,9};
printArray (num1);
b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{-5,-5,-5,-5,15,15};
printArray (num1);
b = ex.single (num1);
System.out.println ("single is: " + b + " \t should be: false");
System.out.println();
System.out.println ("**********************************");
System.out.println ("*** Testing kTimes question #1 ***");
System.out.println ("**********************************");
num1 = new int []{-6,0,-5,7,15,12};
printArray (num1);
b = ex.kTimes (num1, 1);
System.out.println ("kTimes(1) is: " + b + " \t should be: true");
num1 = new int []{-6,0,-5,7,15,12};
b = ex.kTimes (num1, 2);
System.out.println ("kTimes(2) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-6,0,-5,15,17,15};
printArray (num1);
b = ex.kTimes (num1, 1);
System.out.println ("kTimes(1) is: " + b + " \t should be: true");
num1 = new int []{-6,0,-5,15,17,15};
b = ex.kTimes (num1, 2);
System.out.println ("kTimes(2) is: " + b + " \t should be: true");
num1 = new int []{-6,0,-5,15,17,15};
b = ex.kTimes (num1, 3);
System.out.println ("kTimes(3) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-6,0,-5,15,-6,-6};
printArray (num1);
b = ex.kTimes (num1, 2);
System.out.println ("kTimes(2) is: " + b + " \t should be: true");
num1 = new int []{-6,0,-5,15,-6,-6};
b = ex.kTimes (num1, 3);
System.out.println ("kTimes(3) is: " + b + " \t should be: true");
num1 = new int []{-6,0,-5,15,-6,-6};
b = ex.kTimes (num1, 4);
System.out.println ("kTimes(4) is: " + b + " \t should be: false");
num1 = new int []{-6,0,-5,15,-6,-6};
b = ex.kTimes (num1, 5);
System.out.println ("kTimes(5) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{5,5,5,5,5,5};
printArray (num1);
b = ex.kTimes (num1, 5);
System.out.println ("kTimes(5) is: " + b + " \t should be: true");
num1 = new int []{5,5,5,5,5,5};
b = ex.kTimes (num1, 6);
System.out.println ("kTimes(6) is: " + b + " \t should be: true");
num1 = new int []{5,5,5,5,5,5};
b = ex.kTimes (num1, 7);
System.out.println ("kTimes(7) is: " + b + " \t should be: false");
System.out.println ("**********************************");
System.out.println();
System.out.println ("**********************************");
System.out.println ("*** Testing what question #2 ***");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
printArray (num1);
printArray (num2);
b = ex.what (num1, num2, 10);
System.out.println ("what(10) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 16);
System.out.println ("what(16) is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 23);
System.out.println ("what(23) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 24);
System.out.println ("what(24) is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 25);
System.out.println ("what(25) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 27);
System.out.println ("what(27) is: " + b + " \t should be: false");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 36);
System.out.println ("what(36) is: " + b + " \t should be: true");
System.out.println ("**********************************");
num1 = new int []{-5,-3,-1,1,3,5};
num2 = new int []{21,23,25,27,29,31};
b = ex.what (num1, num2, 37);
System.out.println ("what(37) is: " + b + " \t should be: false");
System.out.println();
System.out.println ("*************************************");
System.out.println ("*** Testing chceckGCD question #3 ***");
System.out.println ("*************************************");
num1 = new int []{2,5,7,9,11,13};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: true");
System.out.println ("*************************************");
num1 = new int []{18,5,7,9,4,13};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: false");
System.out.println ("*************************************");
num1 = new int []{23, 5,7,9,17,13};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: true");
System.out.println ("*************************************");
num1 = new int []{23, 5,7,11,17,21};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: false");
System.out.println ("*************************************");
num1 = new int []{23, 5,19,9,17,29};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: true");
System.out.println ("*************************************");
num1 = new int []{23, 5,33,9,17,22};
printArray (num1);
b = ex.checkGCD (num1);
System.out.println ("checkGCD is: " + b + " \t should be: false");
System.out.println ("*************************************");
System.out.println();
System.out.println ("**************************************");
System.out.println ("*** Testing countPaths question #4 ***");
System.out.println ("**************************************");
int[][]matrix = new int[][] {{12,22,23,54},{43,35,21,20},{34,21,43,21},
{25,30,0,20},{0,22,10,10 }, {20,13,3,45}};
printMatrix (matrix);
int count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 3");
System.out.println ();
matrix = new int[][] {{12,22,23,54},{43,35,21,20},{34,11,43,21},
{25,30,0,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 1");
System.out.println ();
matrix = new int[][] {{12,22,23,54},{43,35,21,20},{34,11,43,21},
{25,30,10,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 4");
System.out.println ();
matrix = new int[][] {{13,22,23,54},{43,35,21,20},{34,11,43,21},
{25,22,10,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 2");
System.out.println ();
matrix = new int[][] {{10,22,23,54},{43,35,21,20},{34,11,43,21},
{25,10,10,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 1");
System.out.println ();
matrix = new int[][] {{10,11,23,54},{23,35,21,20},{34,11,43,21},
{25,10,10,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 4");
System.out.println ();
matrix = new int[][] {{10,11,23,54},{23,35,10,20},{34,11,11,21},
{25,10,10,20},{0,22,10,10 }, {20,13,10,45}};
printMatrix (matrix);
count = ex.countPaths (matrix);
System.out.println ("countPaths is: " + count + "\t should be: 5");
System.out.println ();
}
// printArray prints the array content
public static void printArray(int[] values){
System.out.print("The array is:");
for (int i=0; i<values.length; i++)
System.out.print("\t"+ values[i]);
System.out.println();
}
// prints two dimentional array
public static void printMatrix(int[][] values){
System.out.print("The matrix is: \n");
for (int i=0; i<values.length; i++){
for (int j=0; j<values[0].length;j++)
System.out.print("\t"+ values[i][j]);
System.out.println();
}
}
}