Обход двумерного массива спиралью по часовой стрелке
1,00
р.
р.
Задача соревнования: Есть двумерный массив N x N. Нужно написать функцию, которая будет обходить двумерный массив спиралью по часовой стрелке, как показано на картинке.
Пример 4x4: На входе есть двумерный массив: entryArray = [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] На выходе одномерный массив после обхода: exitArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] Язык может быть любым. Основное условие: функция должна работать корректно для любого равностороннего двумерного массива, в том числе 1х1, пустой массив возвращает пустой массив.
Определение победителей: Победитель будет определен по следующим параметрам: Наименьшее количество символов кода Количество голосов Не более 2 правок после первого данного ответа Ответ автора не учитывается при выборе победителя. Победитель определится через 2 недели (26 октября). Просьба указывать язык в заголовке ответа и количество символов минифицированной функции через запятую.
Хотелось бы увидеть решения на Ruby, Haskell, Scala и до бесконечности. Большое спасибо за вашу активность!
Итоги соревнования: 1 место Андрей NOP с ответом на Haskell в 40 байт 2 место Yauhen с ответом на Ruby в 59 байт 3 место Let's say Pie с ответом на JavaScript в 81 байт
Всем большое спасибо за участие, все замечания будут учтены для последующих конкурсов.
Ответ Haskell, 40 s[]=[] s(h:t)=h++(s$reverse$transpose t) Решение эксплуатирует всё ту же идею отрезания первой строки от матрицы и поворота оставшегося куска против часовой стрелки. https://ideone.com/FHeJAx