3. Football Cards
Здравейте,
Бих искал да помоля за помощ относно моето решение на задачата. В judge ми дава 80т., но не виждам причина.
https://pastebin.com/BmufEyx7
Здравейте,
Бих искал да помоля за помощ относно моето решение на задачата. В judge ми дава 80т., но не виждам причина.
https://pastebin.com/BmufEyx7
Има няколко проблема в предложеното решение.
Първият е, че не се прекъсва играта веднага след като някой отбор остане с по-малко от 7 играча, независимо от това колко още червени картона осават необработени от подадените на входа.
Това се заобикаля лесно, ако се добави проверка в цикъла:
for i in the_card_list:
#...
if Team_A < 7 or Team_B < 7:
break
По-сериозният проблем е, че решението размества последователността на подадените входни данни заради междинното преминаване през set:
the_card = input()
the_card_list = list(set(the_card.split()))
Например при входни данни:
A-1 A-2 A-3 A-4 A-5 A-6 A-7 B-1 B-2 B-3 B-4 B-5 B-6 B-7
the_card_list може да е:
['A-6', 'B-1', 'A-5', 'A-2', 'A-1', 'B-5', 'B-7', 'B-6', 'A-3', 'B-2', 'A-7', 'A-4', 'B-3', 'B-4']
Т.е., програмата ще изведе:
Team A - 6; Team B - 7
Game was terminated
Вместо:
Team A - 6; Team B - 11
Game was terminated
Мога да дам и готово решение, но мисля, че с горните коментари ще успеете и сам да решите задачата.
Здравейте, имам същия проблем със задачата. дава ми 80/100 в Judge.
Ако може някой да ми намери грешката.
https://pastebin.com/yWmYupaV
Моето решение:
https://pastebin.com/eLXAaNxz
ето решение и от мен.
team_A = 11
team_B = 11
cards = input().split(" ")
cards_set = set(cards) # ignoring cards for players already out
for element in cards_set:
ele = element.split("-")
letter = ele[0]
num = int(ele[1])
if letter == "A":
team_A -= 1
if team_A < 7:
break
elif letter == "B":
team_B -= 1
if team_B < 7:
break
print(f"Team A - {team_A}; Team B - {team_B}")
if team_A < 7 or team_B < 7:
print("Game was terminated")
Благодаря!
Здравейте, имам същия проблем със задачата. дава ми 80/100 в Judge.
Ако може някой да ми намери грешката.
https://pastebin.com/yWmYupaV
Здравей, и на мен ми дава 80/100
cards = input().split() a = [int(card[2:]) for card in cards if card[0] == 'A'] b = [int(card[2:]) for card in cards if card[0] == 'B'] a_count = 11 - len(set(a)) b_count = 11 - len(set(b)) print(f"Team A - {a_count}; Team B - {b_count}") if a_count < 7 or b_count < 7: print("Game was terminated")