Given a 2D array of any size, write a program or function to shift alternatively the columns and rows
a b c d e f g h i j k l m n o
All elements in the first column shift down one row, the second column shift up one row, the third shift down one row and so on, wrapping when they reach the edge.
k g m i o a l c n e f b h d j
All elements in the first row shift to the right, the second to to the left, the third to the right etc., wrapping when they reach the edge.
o k g m i l c n e a j f b h d
I will follow the tradition of selecting the shortest working code as the best answer