Мой код состоит в том, что он создает матрицу, состоящую из двоичных значений, в зависимости от входных данных, касающихся размера и значений в первой строке. Для вывода я использую два цикла for для печати каждой ячейки в матрице соответственно.
import java.util.Arrays;
public class TrianglePattern {
private int n;
private int h;
private int[] initial;
public static void main(String[] a) {
int[] init = {10};
int n = 21, h = 8;
TrianglePattern tp = new TrianglePattern(n, h, init);
for (int r = 0; r < tp.getH(); r++) {
for (int c = 0; c < tp.getN(); c++) {
System.out.print(tp.getValueAt(r, c));
}
System.out.println();
}
}
public TrianglePattern (int n , int h , int[] initial ) {
if (n<5)
throw new IllegalArgumentException();
this.n = n;
this.h = h;
this.initial = initial;
}
public int getValueAt (int r, int c) {
int[][] multi = new int[h+1][n+1];
for (int i=0; i < initial.length; i++)
multi[0][initial[i]] = 1;
multi[r][0] = 0;
multi[r][n-1] = 0;
for (r = 1; r < h; r++) {
for (c = 1; c < n-1; c++) {
if (multi[r-1][c-1] == 0 && multi[r-1][c] == 0 && multi[r-1][c+1] == 1 ||
multi[r-1][c-1] == 0 && multi[r-1][c] == 1 && multi[r-1][c+1] == 0 ||
multi[r-1][c-1] == 0 && multi[r-1][c] == 1 && multi[r-1][c+1] == 1 ||
multi[r-1][c-1] == 1 && multi[r-1][c] == 0 && multi[r-1][c+1] == 0)
multi[r][c] = 1;
else
multi[r][c] = 0;
}
}
return multi[r][c];
}
}
Теперь это дает мне следующий вывод.
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
Я знаю, что это потому, что г вgetValueAt равно h и c равно n. Поэтому я беру ячейку в последнем ряду и последнем столбце и распечатываю ее в обоих циклах. Вывод, который я хочу получить, следующий:
000000000010000000000
000000000111000000000
000000001100100000000
000000011011110000000
000000110010001000000
000001101111011100000
000011001000010010000
000110111100111111000
Итак, опять мой вопрос: есть ли способ сделать оператор return в методе getValueAt зависимым от чисел в циклах for? Заранее спасибо.