Имя: Пароль:
IT
 
Получить все диагонали квадратной матрицы
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) в обучении...
Программист всегда исправляет последнюю ошибку.