Top.Mail.Ru
Ответы

Помогите срочно либо на питоне либо на любом языке

Теннисный матч
ограничение по времени на тест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

По дате
По Рейтингу
Аватар пользователя
Знаток
3мес

Мне кажется сложнее было прочитать всё, чем написать. Ведь я ленивый.

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()

Аватар пользователя
Оракул
3мес

мля... лайкнуть +1 собственный вопрос - это феерично!