diff --git a/src/main/java/com/walking/intensive/chapter2/task9/Task9.java b/src/main/java/com/walking/intensive/chapter2/task9/Task9.java index 6f32b3ca0..d516f3aa5 100644 --- a/src/main/java/com/walking/intensive/chapter2/task9/Task9.java +++ b/src/main/java/com/walking/intensive/chapter2/task9/Task9.java @@ -51,11 +51,46 @@ */ public class Task9 { public static void main(String[] args) { -// Для собственных проверок можете делать любые изменения в этом методе + System.out.println(getPascalTriangle(18)); } - static String getPascalTriangle(int n) { - // Ваш код - return null; + public static String getPascalTriangle(int rows) { + if (rows <= 0 || rows > 35) { + return ""; + } + StringBuilder temp = new StringBuilder(); + StringBuilder result = new StringBuilder(); + + for (int j = 0; j < rows; j++) { + temp.append(getNum(rows - 1, j)).append('\n'); + } + + int maxLength = temp.length() - 1; + + for (int i = 0; i < rows; i++) { + StringBuilder row = new StringBuilder(); + for (int j = 0; j <= i; j++) { + row.append(getNum(i, j)).append(" "); + } + row.deleteCharAt(row.length() - 1); + int shift = Math.max(0,(maxLength - row.length())/2); + result.append(" ".repeat(shift)) + .append(row) + .append('\n'); + } + return result.toString(); + } + + static int getNum(int rows, int cols) { + if (rows < 0 || cols < 0) { + return 0; + } + if (cols == 0 || rows == cols) { + return 1; + } + if ((cols == 1) || (cols == (rows - 1))) { + return rows; + } + return getNum(rows - 1, cols - 1) + getNum(rows - 1, cols); } }