Улитка

Матрицу можно представить в виде двумерного списка.

Например, список [[1, 2, 3, 4], [5, 6, 7, 8]] — это отображение матрицы:
1 2 3 4
5 6 7 8


Реализуйте функцию snail_path, которая принимает на вход матрицу и возвращает список элементов матрицы по порядку следования от левого верхнего элемента по часовой стрелке к внутреннему. Движение по матрице напоминает улитку:
def snail_path (ar:list) -> list:
    return list(ar[0]) + snail_path( list( zip( *ar[1:] ) ) [::-1] ) if ar else []