diff --git a/src/main/java/com/thealgorithms/maths/PascalTriangle.java b/src/main/java/com/thealgorithms/maths/PascalTriangle.java new file mode 100644 index 000000000000..62ee3bc9aa19 --- /dev/null +++ b/src/main/java/com/thealgorithms/maths/PascalTriangle.java @@ -0,0 +1,65 @@ +package com.thealgorithms.maths; + +import java.util.Scanner; +public class PascalTriangle { + /** + *In mathematics, Pascal's triangle is a triangular array of the binomial coefficients that arises + * in probability theory, combinatorics, and algebra. In much of the Western world, it is named after + * the French mathematician Blaise Pascal, although other mathematicians studied it centuries before + * him in India, Persia, China, Germany, and Italy. + * + * The rows of Pascal's triangle are conventionally enumerated starting with row n=0 at the top (the 0th row). + * The entries in each row are numbered from the left beginning with k=0 and are usually staggered relative + * to the numbers in the adjacent rows. The triangle may be constructed in the following manner: + * In row 0 (the topmost row), there is a unique nonzero entry 1. Each entry of each subsequent row is + * constructed by adding the number above and to the left with the number above and to the right, treating + * blank entries as 0. For example, the initial number in the first (or any other) row is 1 (the sum of 0 and 1), + * whereas the numbers 1 and 3 in the third row are added to produce the number 4 in the fourth row. * + * + *
+ * link:-https://en.wikipedia.org/wiki/Pascal%27s_triangle + * + *
+ * Example:- + * 1 + * 1 1 + * 1 2 1 + * 1 3 3 1 + * 1 4 6 4 1 + * 1 5 10 10 5 1 + * 1 6 15 20 15 6 1 + * 1 7 21 35 35 21 7 1 + * 1 8 28 56 70 56 28 8 1 + * + */ + + public static int[][] pascal(int n) + { + /** + * @param arr An auxiliary array to store generated pascal triangle values + * @return + */ + int[][] arr = new int[n][n]; + /** + * @param line Iterate through every line and print integer(s) in it + * @param i Represents the column number of the element we are currently on + */ + for (int line = 0; line < n; line++) + { + /** + * @Every line has number of integers equal to line number + */ + for (int i = 0; i <= line; i++) + { + // First and last values in every row are 1 + if (line == i || i == 0) + arr[line][i] = 1; + // The rest elements are sum of values just above and left of above + else + arr[line][i] = arr[line-1][i-1] + arr[line-1][i]; + } + } + + return arr; + } +} diff --git a/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java b/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java new file mode 100644 index 000000000000..93c87bd25926 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java @@ -0,0 +1,42 @@ + +package com.thealgorithms.maths; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PascalTriangleTest { + + @Test + void testForOne() + { + int[][] result = PascalTriangle.pascal(1); + int[][] expected = {{1}}; + assertArrayEquals(result,expected); + } + + @Test + void testForTwo() + { + int[][] result = PascalTriangle.pascal(2); + int[][] expected = {{1,0},{1,1}}; + assertArrayEquals(result,expected); + } + + @Test + void testForFive() + { + int[][] result = PascalTriangle.pascal(5); + int[][] expected = {{1,0,0,0,0},{1,1,0,0,0},{1,2,1,0,0},{1,3,3,1,0},{1,4,6,4,1}}; + assertArrayEquals(result,expected); + } + + @Test + void testForEight() { + int[][] result = PascalTriangle.pascal(8); + int[][] expected = {{1,0,0,0,0,0,0,0},{1,1,0,0,0,0,0,0},{1,2,1,0,0,0,0,0},{1,3,3,1,0,0,0,0},{1,4,6,4,1,0,0,0},{1,5,10,10,5,1,0,0},{1,6,15,20,15,6,1,0},{1,7,21,35,35,21,7,1}}; + assertArrayEquals(expected, result); + } + + +} diff --git a/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java b/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java index 2efebb08f2ba..773a5aabf5dc 100644 --- a/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java +++ b/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java @@ -12,21 +12,21 @@ void testForOneElement() { int[] result = ArrayLeftRotation.rotateLeft(arr, 3); assertArrayEquals(arr, result); } - + @Test void testForZeroStep() { int[] arr = {3, 1, 5, 8, 6}; int[] result = ArrayLeftRotation.rotateLeft(arr, 0); assertArrayEquals(arr, result); } - + @Test void testForEqualSizeStep() { int[] arr = {3, 1, 5, 8, 6}; int[] result = ArrayLeftRotation.rotateLeft(arr, 5); assertArrayEquals(arr, result); } - + @Test void testForLowerSizeStep() { int[] arr = {3, 1, 5, 8, 6}; @@ -35,7 +35,7 @@ void testForLowerSizeStep() { int[] result = ArrayLeftRotation.rotateLeft(arr, n); assertArrayEquals(expected, result); } - + @Test void testForHigherSizeStep() { int[] arr = {3, 1, 5, 8, 6}; @@ -45,4 +45,4 @@ void testForHigherSizeStep() { assertArrayEquals(expected, result); } -} +} \ No newline at end of file
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: