@Firesieht

Как решить задачу на python 3?

У нас имеется задача:
После рабочего дня, вечером, в лаборатории все обычно играют в свою любимую игру AICRAFT. Несмотря на бдительность ребят, боты-вирусы время от времени появляются в игре. Кто-то из стажеров был очень наблюдателен и обратил внимание остальных на то, что бот в чате появляется с определенной периодичностью. Ребята пометили каждое сообщение вируса символом “@”, теперь для того, чтобы избавиться от вируса навсегда, надо только посчитать периодичность его выхода в чат и запрограммировать удаление сообщения с таким периодом заблаговременно. Помогите ребятам посчитать период появления вируса в чате.

НА ВХОД:
N — количество строк в диалоге.

Далее на каждой строчке, подаются сообщения из чата (сообщение ВИРУС-БОТА заканчивается на знак “@”).

НА ВЫХОД:
Одно число — периодичность появления бота.

ПРИМЕР:
Вход:

7
Это хорошо
Ага
АгаАгаАгаАгаАгаАга@
АААУжс
Блин, это же бот
Блин, это же ботБлин, это же ботБлин, это же бот@
Грустинка

Выход:
3

У меня получилось такое решение

a = int(input())
counter = 0
fl = False
for i in range(a):
    if input()[-1] == '@':
        if fl: break
        fl = not fl
    if fl:
        counter += 1
print(counter)


По моим тестам и по данным к задаче примерам программа работает, но как только отправляешь ее на проверку сразу бракуется на 3 тесте, помогите исправить или найти ошибку.
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 3
tsarevfs
@tsarevfs
C++ developer
Код похож на правду. Можно придумать несколько крайних ситуаций в которых по условию не понятно что делать.
1. Если сообщений от бота 0 или 1
2. Могут ли быть сообщения не от бота с @ на конце?
Ответ написан
Griboks
@Griboks
N/(messages+'\n').count('@\n')
Ответ написан
adugin
@adugin Куратор тега Python
Если не углубляться в детали:
indices = [index for index, message in enumerate(text.splitlines()) if message.rstrip().endswith('@')]
print(indices[1] - indices[0])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы