In this kata your mission is to rotate matrix counter - clockwise N-times.

So, you will have 2 inputs:

    1)matrix

    2)a number, how many times to turn it

And an output is turned matrix.  
Example:

    matrix = [[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]]
          
    times_to_turn = 1

It should return this:

    [[4, 8, 12, 16],
     [3, 7, 11, 15],
     [2, 6, 10, 14],
     [1, 5, 9, 13]])

Note: all matrixes will be square. Also random tests will have big numbers in input (times to turn)

Happy coding!

Difficulty: EASY
Starter code: def rotate_against_clockwise(matrix, times):
	

Solutions:
def ccw(matrix):
	return [list(row) for row in zip(*map(reversed, matrix))]

def rotate_against_clockwise(matrix, times):
	for __ in range(times % 4):
		matrix = ccw(matrix)
	return matrix


import numpy as np

def rotate_against_clockwise(matrix, times):
	return np.rot90(matrix, times).tolist()


def rotate_against_clockwise(m, t):
	return rotate_against_clockwise([list(r) for r in zip(*m)][::-1], t % 4 - 1) if t else m


def rotate_against_clockwise(matrix, times):
	if times == 0:
		return matrix
	else:
		matrix = [list(row) for row in zip(*matrix)][::-1]
		return rotate_against_clockwise(matrix, times % 4 - 1)


rotate_against_clockwise = lambda a, n: rotate_against_clockwise(list(zip(*a))[::-1], n - 1) if n % 4 else list(map(list, a))


def rotate_against_clockwise(matrix, times):
	return list(map(list, zip(*matrix)))[::-1] if times % 4 == 1 else rotate_against_clockwise(list(map(list, zip(*matrix)))[::-1], times - 1)


def rotate_against_clockwise(m, n):
	for _ in range(n % 4):
		m = [[r[i] for r in m] for i in range(len(m))][::-1]
	return m


def rotate_against_clockwise(matrix, times):
	for i in range(3 - (times + 3) % 4):
		matrix = list(map(list, zip(*matrix[::-1])))
	return matrix