Piet van Dongen пре 11 година
родитељ
комит
7d041c7bde

+ 2
- 1
config.json Прегледај датотеку

29
     "crypto-square",
29
     "crypto-square",
30
     "trinary",
30
     "trinary",
31
     "rna-transcription",
31
     "rna-transcription",
32
-    "sieve"
32
+    "sieve",
33
+    "pascals-triangle"	
33
   ],
34
   ],
34
   "deprecated": [
35
   "deprecated": [
35
   ],
36
   ],

+ 11
- 0
pascals-triangle/build.gradle Прегледај датотеку

1
+apply plugin: "java"
2
+apply plugin: "eclipse"
3
+apply plugin: "idea"
4
+
5
+repositories {
6
+  mavenCentral()
7
+}
8
+
9
+dependencies {
10
+  testCompile "junit:junit:4.10"
11
+}

+ 26
- 0
pascals-triangle/example.java Прегледај датотеку

1
+import java.util.Arrays;
2
+
3
+public class PascalsTriangle {
4
+
5
+    public static int[][] computeTriangle(int rows) {
6
+        if (rows < 0) {
7
+            throw new IllegalArgumentException("Rows can't be negative!");
8
+        }
9
+
10
+        int[][] triangle = new int[rows][];
11
+
12
+        for (int i = 0; i < rows; i++) {
13
+            triangle[i] = new int[i + 1];
14
+            triangle[i][0] = 1;
15
+            for (int j = 1; j < i; j++) {
16
+                triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
17
+            }
18
+            triangle[i][i] = 1;
19
+        }
20
+        return triangle;
21
+    }
22
+
23
+    public static boolean isTriangle(int[][] triangle) {
24
+        return Arrays.deepEquals(triangle, computeTriangle(triangle.length));
25
+    }
26
+}

+ 0
- 0
pascals-triangle/src/main/java/.keep Прегледај датотеку


+ 2
- 0
pascals-triangle/src/main/java/PascalsTriangle.java Прегледај датотеку

1
+public class PascalsTriangle {
2
+}

+ 0
- 0
pascals-triangle/src/test/java/.keep Прегледај датотеку


+ 72
- 0
pascals-triangle/src/test/java/PascalsTriangleTest.java Прегледај датотеку

1
+import org.junit.Test;
2
+
3
+import static org.junit.Assert.assertArrayEquals;
4
+import static org.junit.Assert.assertEquals;
5
+
6
+public class PascalsTriangleTest {
7
+
8
+    @Test
9
+    public void testTriangleWithFourRows() {
10
+        int[][] expectedOutput = new int[][]{
11
+                {1},
12
+                {1, 1},
13
+                {1, 2, 1},
14
+                {1, 3, 3, 1},
15
+        };
16
+
17
+        assertArrayEquals(expectedOutput, PascalsTriangle.computeTriangle(4));
18
+    }
19
+
20
+    @Test
21
+    public void testTriangleWithSixRows() {
22
+        int[][] expectedOutput = new int[][]{
23
+                {1},
24
+                {1, 1},
25
+                {1, 2, 1},
26
+                {1, 3, 3, 1},
27
+                {1, 4, 6, 4, 1},
28
+                {1, 5, 10, 10, 5, 1}
29
+        };
30
+
31
+        assertArrayEquals(expectedOutput, PascalsTriangle.computeTriangle(6));
32
+    }
33
+
34
+    @Test
35
+    public void testExpectEmptyTriangle() {
36
+        int[][] expectedOutput = new int[][]{
37
+
38
+        };
39
+
40
+        assertArrayEquals(expectedOutput, PascalsTriangle.computeTriangle(0));
41
+    }
42
+
43
+    @Test
44
+    public void testValidInput() {
45
+        int[][] input = new int[][]{
46
+                {1},
47
+                {1, 1},
48
+                {1, 2, 1},
49
+                {1, 3, 3, 1},
50
+                {1, 4, 6, 4, 1},
51
+        };
52
+
53
+        assertEquals(true, PascalsTriangle.isTriangle(input));
54
+    }
55
+
56
+    @Test
57
+    public void testInvalidInput() {
58
+        int[][] input = new int[][]{
59
+                {1},
60
+                {1, 1},
61
+                {1, 2, 1},
62
+                {1, 4, 4, 1},
63
+        };
64
+
65
+        assertEquals(false, PascalsTriangle.isTriangle(input));
66
+    }
67
+
68
+    @Test(expected = IllegalArgumentException.class)
69
+    public void testValidatesNotNegativeRows() {
70
+        PascalsTriangle.computeTriangle(-1);
71
+    }
72
+}