В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
tyomking
tyomking
04.12.2021 20:46 •  Информатика

Протокол матча , на языке Python В последнее время в одной из школ Н. Новгорода, а также на одном из факультетов ННГУ стала очень популярна игра в настольный теннис. Игроки часто сталкиваются со следующей проблемой: довольно трудно уследить за всем ходом матча и при этом не сбиться со счёта, поэтому очень хотелось бы иметь программу, подсчитывающую счёт. Напишите программу, которая по данному протоколу матча восстановит итоговый счёт.

Протокол состоит из последовательности следующих событий: service, net, out, goal, return, eom.

События обозначают следующее:

* service — подача (при этом игрок ударяет по мячу). service — всегда первое событие во входном файле. После него могут следовать net, out, goal, return.

* net — мяч ударяется о половину поля того игрока, который ударял по мячу последним, слишком много раз. Игрок, который ударял по мячу последним, проигрывает розыгрыш. После этого события могут идти service или eom.

* out — мяч уходит в аут. Игрок, который ударял по мячу последним, проигрывает розыгрыш. После этого события могут идти service или eom.

* goal — игрок, который ударял по мячу последним, забивает гол (т.,е. выигрывает розыгрыш). Далее может быть service или eom.

* return — игрок отбивает мяч, ударяя по нему (игроки ударяют по мячу по очереди). Далее может быть net, out, goal, return.

* eom — матч окончен. Это всегда последнее событие.

Когда игрок выигрывает розыгрыш, ему начисляется очко. Когда игрок проигрывает розыгрыш, очко начисляется его противнику.

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

Конечно, в реальном матче может произойти ситуация, которую невозможно описать этими событиями, но ваша программа должна считать, что весь матч описывается данными во входном файле событиями.

Входные данные
Во входном файле находится список событий. События расположены по одному на строке без пробелов. Последовательность событий удовлетворяет всему, что было сказано выше; пустых строк во входном файле нет (кроме, возможно, строк после события eom). Всего событий не более 50000.

Выходные данные
В выходной файл выведите два числа: очки того, кто подавал первым, потом — очки его противника.

Пример #1
Входные данные
service
goal
service
out
service
net
service
return
return
return
out
service
return
goal
service
goal
eom

Выходные данные
2 4

Пример #2
Входные данные
service
out
eom

Выходные данные
0 1


Протокол матча , на языке Python В последнее время в одной из школ Н. Новгорода, а также на одном из

Показать ответ
Ответ:
arun3
arun3
24.09.2021 23:47

# data = ['service', 'out', 'eom']

# data = ['service', 'goal', 'service', 'out', 'service', 'net', 'service', 'return', 'return', 'return', 'out', 'service', 'return', 'goal', 'service', 'goal', 'eom']

data = []

name_events = ['service', 'net', 'out', 'goal', 'return', 'eom']

points = [0, 0]

count_serve = 0

last_hit = 1

serve = 0

while True:

   event = input().lower().strip()

   if event in name_events:

       data.append(event)

   else:

       print('Такого события ( ' + event +  ' ) нет!')

   if event == 'eom':

       break

for event in data:

   if event == 'service':

       last_hit = serve

       count_serve += 1

   if event == 'goal':

       points[last_hit] += 1

   if event == 'net':

       if last_hit == 0:

           points[1] += 1

       else:

           points[0] += 1

   if event == 'out':

       if last_hit == 0:

           points[1] += 1

       else:

           points[0] += 1

   if event == 'return':

       if last_hit == 0:

           last_hit = 1

       else:

           last_hit = 0

   if count_serve == 5:

       count_serve = 0

       if serve == 0:

           serve = 1

       else:

           serve = 0

   if event == 'eom':

       print(points)

       break

   

   

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота