|
Получить все диагонали квадратной матрицы
| ☑ |
0
xXeNoNx
15.12.18
✎
11:03
|
Всем привет!
Решаю задачки по python, попалась такая: найти некую последовательность из 4х одинаковых цифр в матрице по вертикали, горизонтали и диагонали. Условия: не использовать numpy или еще какие-либо библиотеки.
Есть мысль разложить матрицу на нужные массивы, с вертикалями и горизонталями понятно, как быть с диагоналями.Понятно что результата можно добиться вложенными циклами, но этож питон, должно быть как-то изящно. Подскажите пож. изящный способ получения массива этих самых диагоналей
|
|
1
RomanYS
15.12.18
✎
11:11
|
d(i)=A(i)(i);//скобки заменить на квадратные
|
|
2
Василий Алибабаевич
15.12.18
✎
11:12
|
(0) "результата можно добиться вложенными циклами". Вложенные циклы не нужны. Алгоритм простейший. Из одного цикла. Первый курс информатики. Даже не теория алгоритмов.
Диагональ (1,1), (2,2)... (вот такая : \)
for (i=0, i++, i<MatrixDimension){Var[i] = Matrix[i,i]}
Диагональ (1,MatrixDimension), (2,MatrixDimension-1)... (вот такая : /)
for (i=0, i++, i<MatrixDimension){Var[i] = Matrix[i,MatrixDimension-i]}
Это алгоритм. Как там оно на ваших питонах пишется придумайте сами.
|
|
3
Василий Алибабаевич
15.12.18
✎
11:14
|
(2) При расчете второй диагонали учесть, что индекс отнулевой.
for (i=0, i++, i<MatrixDimension){Var[i] = Matrix[i,MatrixDimension - 1 - i]}
|
|
4
mastodont
15.12.18
✎
11:15
|
Мне кажется тут решение "в лоб" самое оптимальное...
Перебираешь элементы с левого верхнего угла (от 0 до размер матрицы - 3) и для каждого смотришь 3 элемента вправо, вниз и по диагонали вправо и вниз...
|
|
5
xXeNoNx
15.12.18
✎
13:39
|
(4) да, это самое простое циклами-то не проблема их перебрать
|
|
6
Prog111
15.12.18
✎
13:40
|
А где это практически используется?
|
|
7
xXeNoNx
15.12.18
✎
13:41
|
(6) в обучении...
|
|