Source code for kyu_4.snail.snail_sort

"""
Solution for -> Snail.

Returns the array elements arranged from outermost elements
to the middle element, traveling clockwise.

Created by Egor Kostan.
GitHub: https://github.com/ikostan
"""


[docs] def snail(snail_map: list) -> list: """ Snail function. Returns the array elements arranged from outermost elements to the middle element, traveling clockwise. :param snail_map: n x n array :return: list of elements arranged from outermost elements to the middle element, traveling clockwise """ if not snail_map: return [] result: list = [] while snail_map: try: # 1 left to right for i in snail_map[0]: result.append(i) del snail_map[0] # 2 top to bottom for i, row in enumerate(snail_map): result.append(row[-1]) del snail_map[i][-1] # 3 right to left for i in range(-1, -1 * len(snail_map[-1]) - 1, -1): result.append(snail_map[-1][i]) del snail_map[-1] # 4 bottom to top for i in range(1, len(snail_map) + 1): result.append(snail_map[i * -1][0]) del snail_map[i * -1][0] except IndexError: break return result