Протокол матча , на языке 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
# 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