Selaa lähdekoodia

squareArray and TicTacToe complete

Demetrius Murray 5 vuotta sitten
vanhempi
commit
4f5ba6ec71

+ 8
- 1
src/main/java/rocks/zipcode/io/quiz3/arrays/SquareArrayAnalyzer.java Näytä tiedosto

@@ -1,10 +1,17 @@
1 1
 package rocks.zipcode.io.quiz3.arrays;
2 2
 
3
+import java.util.Arrays;
4
+
3 5
 /**
4 6
  * @author leon on 09/12/2018.
5 7
  */
6 8
 public class SquareArrayAnalyzer {
7 9
     public static Boolean compare(Integer[] input, Integer[] squaredValues) {
8
-        return null;
10
+        if (input.length != squaredValues.length) return false;
11
+        Arrays.sort(input); Arrays.sort(squaredValues);
12
+        for (int i=0; i<input.length; i++)
13
+            if ((input[i]*input[i]) != squaredValues[i])
14
+                return false;
15
+        return true;
9 16
     }
10 17
 }

+ 44
- 4
src/main/java/rocks/zipcode/io/quiz3/arrays/TicTacToe.java Näytä tiedosto

@@ -5,26 +5,66 @@ package rocks.zipcode.io.quiz3.arrays;
5 5
  */
6 6
 public class TicTacToe {
7 7
 
8
+    String[][] board;
9
+
8 10
     public TicTacToe(String[][] board) {
11
+        this.board = board;
9 12
     }
10 13
 
11 14
     public String[] getRow(Integer value) {
12
-        return null;
15
+        return board[value];
13 16
     }
14 17
 
15 18
     public String[] getColumn(Integer value) {
16
-        return null;
19
+        String[] column = new String[board.length];
20
+        for (int i=0; i<board.length; i++)
21
+            column[i] = board[i][value];
22
+        return column;
17 23
     }
18 24
 
19 25
     public Boolean isRowHomogenous(Integer rowIndex) {
20
-        return null;
26
+        return isHomogenous(getRow(rowIndex));
21 27
     }
22 28
 
23 29
     public Boolean isColumnHomogeneous(Integer columnIndex) {
24
-        return null;
30
+        return isHomogenous(getColumn(columnIndex));
25 31
     }
26 32
 
27 33
     public String getWinner() {
34
+        for (int i=0; i<board.length; i++) {
35
+            if (isRowHomogenous(i)) return getRow(i)[0];
36
+            else if (isColumnHomogeneous(i)) return getColumn(i)[0];
37
+        }
38
+
39
+        if (isHomogenous(backDiagonal())) return backDiagonal()[0];
40
+        else if (isHomogenous(forwardDiagonal())) return forwardDiagonal()[0];
28 41
         return null;
29 42
     }
43
+
44
+    //the diagonal line in the form of back slash
45
+    private String[] backDiagonal(){
46
+        String[] diag = new String[board.length];
47
+        for (int i=0; i<board.length; i++)
48
+            diag[i] = board[i][i];
49
+        return diag;
50
+    }
51
+
52
+    //the diagonal line in the form of forward slash
53
+    private String[] forwardDiagonal(){
54
+        String[] diag = new String[board.length];
55
+        int j = board.length - 1;
56
+        for (int i=0; i<board.length; i++) {
57
+            diag[i] = board[i][j];
58
+            j--;
59
+        }
60
+        return diag;
61
+    }
62
+
63
+    //one stop shop for homogoneity
64
+    private Boolean isHomogenous(String[] line){
65
+        for (int i=1; i<board.length; i++)
66
+            if (!line[i].equals(line[i-1]))
67
+                return false;
68
+        return true;
69
+    }
30 70
 }