Это должен быть довольно прямолинейный вопрос, но я не могу понять, как получить все диагонали не квадратной матрицы.Диагональные линии в массиве NonSquare
У меня уже есть то, что я считаю антидиагоналями (примеры на: https://stackoverflow.com/a/33769730), но мне также нужны противоположные диагональные линии.
Пример массив:
1 2 3 4
5 6 7 8
9 10 11 12
Токовый выход:
[1], [2,5], [3,6,9], [4,7,10], [8,11], [12]
Ожидаемый дополнительный выход:
[4], [3,8], [2,7,12], [1,6,11], [5,10], [9]
Я ищу больше для псевдокода, так что я могу понять это лучше.
EDIT: Код я должен получить анти-диагоналей (поскольку ни один не кажется, хочет следовать по ссылке)
int ndiags = width + height - 1;
System.out.println("---");
for (int diag = 0; diag < ndiags; diag++) {
int row_stop = Math.max(0, diag - width + 1);
int row_start = Math.min(diag, height - 1);
for (int row = row_start; row >= row_stop; row--) {
// on a given diagonal row + col = constant "diag"
// diag labels the diagonal number
int col = diag - row;
System.out.println(col + "," + row);
relax(col, row);
}
System.out.println("---");
}
Я попытался следующие, но я до сих пор только получение анти-диагоналей:
int ndiags = width + height - 1;
System.out.println("---");
for (int diag = 0; diag < ndiags; diag++) {
int row_stop = Math.max(0, diag - height + 1);
int row_start = Math.min(diag, width - 1);
for (int row = row_start; row >= row_stop; row--) {
// on a given diagonal row + col = constant "diag"
// diag labels the diagonal number
int col = diag - row;
System.out.println(col + "," + row);
relax(col, row);
}
System.out.println("---");
}
сообщение, что у вас уже есть. Кроме того, это Java или C#? – Tunaki
Не имеет значения, что - я могу перевести между двумя – redhotspike
Тем не менее, вы говорите в своем вопросе, что у вас уже есть что-то. Не могли бы вы опубликовать его и сказать, что с ним не так? – Tunaki