I borrowed this one from codewars
Snail SortGiven an n x n array, return the array elements arranged from outermost elements to the middle element, traveling clockwise.
array = [[1,2,3], [4,5,6], [7,8,9]]snail(array) #=> [1,2,3,6,9,8,7,4,5]For better understanding, please follow the numbers of the next array consecutively:
array = [[1,2,3], [8,9,4], [7,6,5]]snail(array) #=> [1,2,3,4,5,6,7,8,9]This image will illustrate things more clearly:
NOTE: The idea is not sort the elements from the lowest value to the highest; the idea is to traverse the 2-d array in a clockwise snailshell pattern.
Octave solution Show more
function sorted = snail(array) if numel(array) <= 1 sorted = array; else sorted = [array(1, 1:(end-1)),... array(1:(end-1), end)',... array(end, end:-1:2),... array(end:-1:2, 1)',... snail(array(2:(end-1), 2:(end-1))) ]; end; end;
@khird looks good, much better than my python solution :)
QOTO: Question Others to Teach Ourselves. A STEM-oriented instance.
No hate, No censorship. Be kind, be respectful
We federate with all servers: we don't block any servers.