Однажды ты просыпаешься только для того, чтобы оказаться пойманным во множестве. Вы пытаетесь просто уйти оттуда, взяв один индекс за раз, но, похоже, существуют другие правила:
Массив полностью заполнен натуральными числами.
- Если вы попали в индекс
n
, вы переходите в индексarray[n]
, кроме: - Если вы попадаете в индекс,
n
который является простым числом, вы делаетеarray[n]
шаги назад
Пример: вы начинаете с индекса 4
в этом массиве (индекс запуска равен 0):
array = [1,4,5,6,8,10,14,15,2,2,4,5,7];
-----------------^ you are here
Поскольку значение поля, на котором вы находитесь, является первым шагом 8
, вы переходите к индексу 8
. Поле, в котором вы приземлились, содержит значение 2
. Затем вы идете на индекс в 2
качестве второго шага. Как 2
простое число, вы делаете 5 шагов назад, это ваш третий шаг. Поскольку индекс отсутствует -3
, вы успешно экранировали массив всего за 3 шага.
Ваша задача:
Написать программу или функцию, которая принимает массив и начальный индекс в качестве параметра и выводит количество шагов для выхода из массива. Если вы не можете избежать массива (например, [2,0,2]
с помощью start-index 2
=> вы постоянно переходите от индекса 2
к 0
), выведите ложное значение. Вы можете использовать индексирование на основе одного индекса или индексирование на основе нуля, но, пожалуйста, укажите, какое из них вы используете.
Контрольные примеры
Входные данные: [2,5,6,8,1,2,3], 3
Выход: 1
Входные данные: [2, 0, 2], 2
Выход: false
Входные данные : [14,1,2,5,1,3,51,5,12,3,4,41,15,4,12,243,51,2,14,51,12,11], 5
;
Выход: 6
Самый короткий ответ выигрывает.