Циклический сдвиг вправо на n

Эта задача похожа на предыдущую, но несколько более сложная. Хорошее решение не так очевидно, как кажется на первый взгляд.

Теперь нужно написать функцию, которая циклически сдвинет элементы массива вправо n раз. То есть мы передаём в функцию два аргумента: массив и число n. Она должна вернуть массив после n операций сдвига.

Интерфейс, которому должна соответствовать функция:

function shiftToRight(array $array, int $n): array

Обратите внимание, что если у вас массив из трех элементов, а сдвинуть надо 5 раз, то мы сдвинем 3 раза и получим исходный массив, а потом еще сдвинем на 2. То есть после 5 сдвигов, результат будет тот же, как после 2! Учитывайте это при решении - чем меньше операций произойдет внутри функции, тем лучше.

Решение

loader
Логические задачи с собеседований