That's really elegant! I like the idea of using zip to transpose. I'll have
to remember that one.

On 25 Apr 2017 11:49 am, "'phil barton' via Python North-West" <
[email protected]> wrote:

> To follow up on the rotate like a vortex code we were doing last week,
> I've finished off our solution and thought you may find it interesting:
>
> def rotate_like_a_vortex(matrix):
>     # Do we need to rotate this iteration?
>     if len(matrix) <= 1:
>         return matrix
>
>     # Zip transposes an array. A transpose and a flip = a rotate of a 2d
> array
>     transposed_array = [list(a) for a in zip(*matrix)]
>     # Flip the array with list slicing
>     flipped_array = transposed_array[-1::-1]
>
>     # Recurse an extra rotate_like_a_vortex call on each subset (layer)
>     # of the 2d array
>     inner_array = rotate_like_a_vortex([z[1:-1] for z in
> flipped_array[1:-1]])
>
>     # replace elements of flipped_array with inner_array
>     for i, x in enumerate(flipped_array[1:-1]):
>         x[1:-1] = inner_array[i]
>
>     # flipped_array is now completely rotated. Return
>     return flipped_array
>
> https://www.codewars.com/kata/reviews/58dbcf00ef475e15e70001ab/groups/
> 58ff1d6347ad55b575000c51
>
> Cheers,
> Phil.
>
> --
> --
> To post: [email protected]
> To unsubscribe: [email protected]
> Feeds: http://groups.google.com/group/python-north-west/feeds
> More options: http://groups.google.com/group/python-north-west
>
> ---
> You received this message because you are subscribed to the Google Groups
> "Python North-West" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
To post: [email protected]
To unsubscribe: [email protected]
Feeds: http://groups.google.com/group/python-north-west/feeds
More options: http://groups.google.com/group/python-north-west

--- 
You received this message because you are subscribed to the Google Groups 
"Python North-West" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to