Ctrl K

Кузнечик идёт домой

Средняя
Кузнечик сидит в точке 0 числовой прямой, а его дом — в точке home. Он прыгает по правилам: - прыжок вперёд — ровно на forward вправо; - прыжок назад — ровно на back влево; - два прыжка назад подряд делать нельзя; - приземляться в отрицательные точки и в точки из списка traps нельзя. Перелетать дом можно: кузнечик вправе уйти дальше home и потом вернуться. Верните наименьшее число прыжков, за которое кузнечик окажется ровно в точке home, или -1, если это невозможно.
Пример 1
traps=[2, 9], forward=4, back=3, home=5 → 3

Например, 0 → 4 → 1 → 5: вперёд, назад, вперёд. Быстрее чем за три прыжка до 5 не добраться.

Пример 2
traps=[4], forward=4, back=1, home=3 → -1

Прыжок вперёд ведёт в ловушку 4, а назад из нуля прыгать некуда — кузнечик не может сдвинуться.

Пример 3
traps=[1], forward=2, back=1, home=0 → 0

Кузнечик уже дома.

Ограничения
  • 0 ≤ len(traps) ≤ 1000
  • 1 ≤ traps[i] ≤ 2000, все значения traps различны
  • 1 ≤ forward, back ≤ 2000
  • 0 ≤ home ≤ 2000
  • home не входит в traps
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМинимум купюр СредняяШаги до ближайшего нуля СредняяДальше всего от берега СредняяПерекрыть единственный проход СредняяКамни на поле 3 × 3 Средняя
загружаем Python…
Вход
traps=[2, 9], forward=4, back=3, home=5
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 89 тестов на сервере, включая скрытые.