Вывод матрицы на консоль в виде пирамиды

345
11 мая 2018, 15:37
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1

Не могу придумать, как можно заполнить матрицу таким образом и вывести её на экран?

Answer 1

Задачка довольно тривиальная и немного математическая:

public static int[][] pyramideMatrix(int cells) {
    // или `cells * 2`, чтобы пирамида была как в вопросе
    int dim = cells * cells;
    int[][] arr = new int[dim][dim];
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            int ii;
            int ij;
            if (i < dim/2) {
                ii = Math.min(i, j);
            } else {
                ii = Math.min(dim - 1 - i, j);
            }
            if (j < dim/2) {
                ij = Math.min(i, j);
            } else {
                ij = Math.min(i, dim - 1 - j);
            }
            arr[i][j] = Math.min(ii, ij);
        }
    }
    return arr;
}

Вот пример:

int[][] matrix = pyramideMatrix(3);
StringBuilder sb = new StringBuilder();
for (int[] arr: matrix) {
    sb.append(Arrays.toString(arr)).append('\n');
}
System.out.println(sb);

Вывод в консоль:

[0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 1, 1, 1, 1, 1, 1, 0]
[0, 1, 2, 2, 2, 2, 2, 1, 0]
[0, 1, 2, 3, 3, 3, 2, 1, 0]
[0, 1, 2, 3, 4, 3, 2, 1, 0]
[0, 1, 2, 3, 3, 3, 2, 1, 0]
[0, 1, 2, 2, 2, 2, 2, 1, 0]
[0, 1, 1, 1, 1, 1, 1, 1, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0]

READ ALSO
Как вывести текст в JTextArea (swing)?

Как вывести текст в JTextArea (swing)?

Есть массив объектов и элемент текстового поля класса JTextAreaНеобходимо вывести в этот элемент несколько длинных предложений, состоящих из моих...

268
camel noErrorHandle

camel noErrorHandle

Разбираюсь с apache camel и в частности с ErrorHandler

366
парсинг JSON сайта на java

парсинг JSON сайта на java

Необходимо получить джсон, который находится по ссылке https://swapgg/api/inventory/bot

196