Esteiras transportadoras, túneis de teletransporte

Neste desafio, você precisa lidar com uma matriz que se move da esquerda para a direita uma determinada quantidade de vezes, deslocando seus itens como em uma esteira transportadora. No final do último array dentro da matriz, há um túnel de teletransporte. O túnel de teletransporte faz com que os elementos empurrados para fora pelos deslocamentos apareçam no início da matriz, na mesma ordem em que estavam antes do deslocamento. Veja o exemplo abaixo:

# Before the movement.
mtx = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = 2

# After the movement (2 shifts to the right).
mtx = [[8, 9, 1], [2, 3, 4], [5, 6, 7]]

# Shifting 2 times to the right, "8" and "9" are pushed through the warp tunnel.
# The warped elements appear at the start.

Dada uma matriz mtx e um inteiro n, implemente uma função que retorne a mesma matriz com seus elementos deslocados n vezes.

Exemplos

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

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

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

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

Observações

  • As matrizes fornecidas são regulares (cada array tem a mesma quantidade de elementos), com comprimentos e quantidade de arrays variáveis.
  • A matriz retornada deve ter as mesmas dimensões que a original.
  • O n fornecido pode ser maior que a quantidade total de elementos dentro da matriz (consulte o exemplo #4). Cada vez que você completar um ciclo de deslocamento (de modo que cada elemento volte à sua posição original, como no exemplo #3), deverá começar novamente.