Ctrl K

Ближайшая карточка на круге

Лёгкая
Карточки со словами разложены по кругу: список cards замкнут, за последней карточкой снова идёт первая. Для n = len(cards) соседи карточки i — это (i + 1) % n и (i - 1 + n) % n. Вы стоите у карточки с индексом start и за один шаг переходите к соседней карточке — по часовой стрелке или против. Верните наименьшее число шагов, за которое можно дойти до карточки со словом wanted. Если такого слова среди карточек нет, верните -1.
Пример 1
cards=['sun', 'moon', 'star', 'comet', 'moon', 'sky'], wanted='sky', start=1 → 2

От позиции 1 до «sky» (позиция 5) вперёд 4 шага, а назад через начало круга — всего 2: 1 → 0 → 5.

Пример 2
cards=['red', 'blue', 'red'], wanted='red', start=2 → 0

Искомое слово лежит прямо на стартовой позиции, двигаться не нужно.

Пример 3
cards=['one', 'two'], wanted='three', start=0 → -1

Слова «three» на круге нет вовсе, поэтому ответ -1.

Ограничения
  • 1 ≤ len(cards) ≤ 100
  • 1 ≤ длина каждого слова в cards и wanted ≤ 100
  • Все слова состоят из строчных латинских букв
  • 0 ≤ start < len(cards)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДва слова ближе всего ЛёгкаяСлова одного ряда ЛёгкаяГде поужинать вдвоём ЛёгкаяФразы со словами-синонимами ЛёгкаяСлово из букв автономера Лёгкая
загружаем Python…
Вход
cards=['sun', 'moon', 'star', 'comet', 'moon', 'sky'], wanted='sky', start=1
Ожидается
2

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