Girar um array 2D 90 graus no sentido horário

Crie uma função que retorne um array 2D cujos elementos tenham sido girados 90 graus. O array fornecido conterá três elementos, cada um deles sendo um array com três elementos que serão inteiros únicos.

A saída desejada deve ser um novo array 2D cujo conteúdo seja o array original girado 90 graus no sentido horário. Portanto, a linha 1 do array original se torna a coluna 3 do array retornado, a linha 2 se torna a coluna 2 e a linha 3 se torna a coluna 1.

Exemplos

rotate([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]) ➞ [
  [7, 4, 1],
  [8, 5, 2],
  [9, 6, 3]
]

rotate([
  ["a", "b", "c"],
  ["d", "e", "f"],
  ["g", "h", "i"]
]) ➞ [
  ["g", "d", "a"],
  ["h", "e", "b"],
  ["i", "f", "c"]
]

Observações

N/A