Протокол матча , на языке 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 В последнее время в одной из школ Н. Новгорода, а также на одном из

Vlarizon98 Vlarizon98    1   25.08.2021 15:31    4

Ответы
vadimrusackeviVadim vadimrusackeviVadim  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

   

   

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика