Петля по спирали
друг нуждался в алгоритме, который позволил бы ему перебирать элементы матрицы NxM (N и M нечетны). Я придумал решение, но я хотел посмотреть, могут ли мои коллеги SO'ERS придумать лучшее решение.
Я публикую свое решение в качестве ответа на этот вопрос.
Пример:
для матрицы 3x3 выход должен быть:
(0, 0)
(1, 0)
(1, 1)
(0, 1)
(-1, 1)
(-1, 0)
(-1, -1)
(0, -1)
(1, -1)

кроме того, алгоритм должен поддерживать неквадратичные матрицы, поэтому, например, для матрицы 5x3 выход должен быть:
(0, 0)
(1, 0)
(1, 1)
(0, 1)
(-1, 1)
(-1, 0)
(-1, -1)
(0, -1)
(1, -1)
(2, -1)
(2, 0)
(2, 1)
(-2, 1)
(-2, 0)
(-2, -1)

Comments