Desplazamientos a la izquierda y a la derecha

Crea dos funciones: una de desplazamiento a la izquierda y otra de desplazamiento a la derecha. Cada función recibirá un arreglo y un número que indica cuántas posiciones desplazarlo.

new int[]{1, 2, 3, 4, 5}

new int[]{2, 3, 4, 5, 1}  // desplazamiento a la izquierda de 1
new int[]{5, 1, 2, 3, 4}  // desplazamiento a la izquierda de 4

new int[]{5, 1, 2, 3, 4}  // desplazamiento a la derecha de 1
new int[]{3, 4, 5, 1, 2}  // desplazamiento a la derecha de 3

Ejemplos

Program.leftShift(new int[]{1, 2, 3, 4}, 1) ➞ new int[]{2, 3, 4, 1}

Program.rightShift(new int[]{1, 2, 3, 4}, 1) ➞ new int[]{4, 1, 2, 3}

Program.leftShift(new int[]{1, 2, 3, 4, 5}, 3) ➞ new int[]{4, 5, 1, 2, 3}

Program.leftShift(new int[]{1, 2, 3, 4, 5}, 5) ➞ new int[]{1, 2, 3, 4, 5}
// Al desplazar el arreglo una vuelta completa, vuelves al orden inicial.

Program.leftShift(new int[]{1, 2, 3, 4, 5}, 6) ➞ new int[]{2, 3, 4, 5, 1}
// Las funciones deben aceptar cantidades de desplazamientos mayores que la longitud del arreglo.
// Considera la longitud del arreglo como el módulo.

Notas

  • num puede ser mayor que la cantidad de elementos del arreglo.
  • num nunca será negativo.