Вход | Регистрация

Информационные технологии :: Математика и алгоритмы

Получить все диагонали квадратной матрицы

Получить все диагонали квадратной матрицы
Я
   xXeNoNx
 
15.12.18 - 11:03
Всем привет!
Решаю задачки по python, попалась такая: найти некую последовательность из 4х одинаковых цифр в матрице по вертикали, горизонтали и диагонали. Условия: не использовать numpy или еще какие-либо библиотеки.
Есть мысль разложить матрицу на нужные массивы, с вертикалями и горизонталями понятно, как быть с диагоналями.Понятно что результата можно добиться вложенными циклами, но этож питон, должно быть как-то изящно. Подскажите пож. изящный способ получения массива этих самых диагоналей
 
 
   RomanYS
 
1 - 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]}
   mastodont
 
4 - 15.12.18 - 11:15
Мне кажется тут решение "в лоб" самое оптимальное...
Перебираешь элементы с левого верхнего угла (от 0 до размер матрицы - 3) и для каждого смотришь 3 элемента вправо, вниз и по диагонали вправо и вниз...
   xXeNoNx
 
5 - 15.12.18 - 13:39
(4) да, это самое простое циклами-то не проблема их перебрать
   Prog111
 
6 - 15.12.18 - 13:40
А где это практически используется?
   xXeNoNx
 
7 - 15.12.18 - 13:41
(6) в обучении...

Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует