@kjjokay

Как делать спиральные массивы?

всем привет! я только недавно изучаю массивы и вообще пайтон. недавно видел такую штуку как спиральные двумерные массивы. примерно как их создать я понимаю, но не до конца. вот например как создать спиральный массив начиная снизу, или изнутри и тп. помогите понять
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, гуглер, экс-олимпиадник.
Берете бумажку, рисуете на ней нужный вам спиральный массив. Внимательно на нее смотрите.

Выписываете прямые куски - какой они длины, в какую сторону вращаются. Ищите паттерн (например в спиральном массиве из центра длины кусков: 1, 1, 2, 2, 3, 3, ...).

Реализуете его. Внешний цикл работает пока все числа не поставились. Внутри пересчитываете по паттерну длину и направление прямого куска и запускаете цикл от текущей позиции вдоль направления - ставьте числа нужное количество раз.

Для реализации поворота храните текущее направление в виде двух переменных dx, dy. Одна из них +-1, а другая 0. Для поворота против часовой стрелки делаете (dx, dy) = (-dy, dx)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы