Нашли ошибку?

Симметричный маршрут

ЛёгкаяНайти ошибку2 ошибкиГлава 3

#базовый случай#рекурсивный случайid: ga-symmetric-route

Маршрут автобуса — список остановок. Он называется симметричным, если одинаково читается от начала и от конца. Функция is_symmetric(route) проверяет это рекурсивно, но в ней две ошибки. Найдите и исправьте их.

Примеры

is_symmetric(["Депо", "Рынок", "Депо"])            # True
is_symmetric(["Парк", "Мост", "Мост", "Парк"])     # True
is_symmetric(["Парк", "Мост"])                     # False
is_symmetric([])                                   # True — пустой маршрут симметричен

Идея алгоритма

Если первая и последняя остановки различаются, маршрут не симметричен. Если совпадают — проверяем тем же способом маршрут без них.

Решение

def is_symmetric(route: list[str]) -> bool:
    """Проверяет, читается ли маршрут одинаково с начала и с конца."""
    if len(route) == 1:
        return True
    if route[0] != route[-1]:
        return False
    return is_symmetric(route[1:-2])

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 symmetric_route.py — тесты те же, результат покажет ✓ / ✗ и итог.