Помогите срочно либо на питоне либо на любом языке
Теннисный матч
ограничение по времени на тест1 секунда
ограничение по памяти на тест256 мегабайт
вводстандартный ввод
выводстандартный вывод
В финале крупнейшего спортивного турнира «Хрустальная ракетка» на главном корте встретились два лучших теннисиста современности. Тысячи зрителей стали свидетелями яркого противостояния, красивых розыгрышей, блистательных подач, умопомрачительных сэйвов, отчаянных прыжков и ... энергетического коллапса, выразившегося в отключении света. Когда яркие прожекторы вновь зажглись, выяснилось, что все компьютерные данные о ходе матча не сохранились. Хорошо, что резервный судья отмечал на листочке кто из соперников какой гейм выиграл. Помогите организаторам и восстановите счет на главном табло теннисного корта!
Теннисный матч состоит из сетов, сет состоит из геймов, каждый сет начинается со счета 0-0. Сет завершается победой игрока, первым выигравшим 6 геймов, при этом у соперника должно быть выиграно не более 4 геймов, в противном случае сет продолжается до того момента, пока кто-то из игроков не выиграет седьмой гейм. Другими словами, сет может завершиться со счетом 6-0, 6-1, 6-2, 6-3, 6-4, 7-5 и 7-6 в пользу одного из игроков. Игра заканчивается, когда один из игроков выиграет три сета.
Входные данные
Единственная строка входного файла содержит непустую строку
s
, состоящую из символов 1 и 2. Символ 1 соответствует событию «гейм выиграл первый игрок», символ 2 соответствует событию «гейм выиграл второй игрок». Гарантируется, что запись соответствует одной игре (возможно, ещё не завершившейся).
Выходные данные
Выведите в первой строке счет в матче по сетам, даже если матч еще не завершен. В каждой из следующих строк выведите счет в каждом из сетов. Числа разделяйте символом «-». Если последний игравшийся сет не завершен, то выведите его текущий счет. Если игра еще не завершилась, а следующий сет еще не начался, выведите «0-0».
Система оценки
Баллы за каждый тест начисляются независимо.
Примеры
Входные данные
1111112212211212121212121222121
Выходные данные
1-2
6-0
4-6
5-7
2-1
Входные данные
222222222222222222
Выходные данные
0-3
0-6
0-6
0-6
Входные данные
111111
Выходные данные
1-0
6-0
0-0
Мне кажется сложнее было прочитать всё, чем написать. Ведь я ленивый.
def solve():
s = input()
sets1 = 0
sets2 = 0
set_scores = []
game1 = 0
game2 = 0
for winner in s:
if winner == '1':
game1 += 1
else:
game2 += 1
def is_set_over(g1, g2):
if (g1 >= 6 and g2 <= g1 - 2) or (g1 == 7 and g2 == 5) or (g1 == 7 and g2 == 6):
return True, 1
elif (g2 >= 6 and g1 <= g2 - 2) or (g2 == 7 and g1 == 5) or (g2 == 7 and g1 == 6):
return True, 2
else:
return False, 0
set_over, set_winner = is_set_over(game1, game2)
if set_over:
set_scores.append(f"{game1}-{game2}")
if set_winner == 1:
sets1 += 1
else:
sets2 += 1
game1 = 0
game2 = 0
print(f"{sets1}-{sets2}")
for score in set_scores:
print(score)
if sets1 < 3 and sets2 < 3:
if game1 == 0 and game2 == 0 and len(set_scores) < sets1 + sets2 + 1:
print("0-0")
elif game1 != 0 or game2 !=0 :
print(f"{game1}-{game2}")
solve()
мля... лайкнуть +1 собственный вопрос - это феерично!