Dans le football d'association (également connu sous le nom de football), une séance de tirs au but est la deuxième mesure de bris d'égalité qui peut être utilisée dans un match qui ne peut pas se terminer par une égalité, après une prolongation (c'est-à-dire des heures supplémentaires de football d'association).
Lors d'une séance de tirs au but, l'arbitre principal lance une pièce pour déterminer à quel but la fusillade a lieu, puis lance une autre pièce pour déterminer quelle équipe commence en premier. Cependant, la seule chose pertinente pour ce défi est ce qui se passe alors, décrit ci-dessous.
Chaque équipe dispose de 5 pénalités au départ et le score de pénalité est de 0-0. Si, à tout moment, les pénalités restantes d'une équipe ne suffisent pas à changer l'équipe actuellement gagnante, la fusillade s'arrête.
S'il n'y a plus de pénalité, mais que les points des deux équipes sont égaux, une pénalité supplémentaire est accordée aux deux équipes. Ceci est répété jusqu'à ce que les points ne soient pas égaux.
Après les tirs de barrage, l'équipe avec le score de pénalité le plus élevé remporte la partie.
Défi
Votre défi est, étant donné deux listes A
etB
représenter les pénalités que l'équipe A et l'équipe B ont respectivement marquées, à déterminer si elles représentent une fusillade valide. Une fusillade est valide si l'état représenté par l'entrée peut être atteint, que l'équipe gagnante puisse être déterminée ou non. Notez que vous devez éventuellement tester les deux scénarios (démarrage de l'équipe A, démarrage de l'équipe B), car si l'état décrit dans l'entrée est accessible pour au moins un scénario, l'entrée est valide. Si les longueurs des listes sont différentes, l'équipe représentée par la plus longue commence en premier (elle ne peut avoir qu'un élément de plus que l'autre, et l'équipe de la liste la plus courte ne peut pas commencer, car alors l'équipe de la liste la plus longue tirerait deux pénalités d'affilée, car la liste plus courte sera épuisée prématurément).
Exemples détaillés
Vous pouvez passer à la section Règles ci-dessous, ce n'est que pour aider à résoudre le défi.
Supposons que vous obtenez cette fusillade en entrée, où -
signifie qu'aucun but n'a été marqué et X
signifie qu'un but a été marqué (il n'est pas valide):
Team A: - X X X X
Team B: - - - - X
Assuming team A starts first:
Team A: - (0 - 0) (max possible score 4 - 5)
Team B: - (0 - 0) (max possible score 4 - 4)
Team A: X (1 - 0) (max possible score 4 - 4)
Team B: - (1 - 0) (max possible score 4 - 3)
Team A: X (2 - 0) (max possible score 4 - 3)
Team B: - (2 - 0) (max possible score 4 - 2)
Team A: X (3 - 0) (max possible score 4 - 2)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team A is first.
Assuming team B starts first:
Team B: - (0 - 0) (max possible score 5 - 4)
Team A: - (0 - 0) (max possible score 4 - 4)
Team B: - (0 - 0) (max possible score 4 - 3)
Team A: X (1 - 0) (max possible score 4 - 3)
Team B: - (1 - 0) (max possible score 4 - 2)
Team A: X (2 - 0) (max possible score 4 - 2)
Team B: - (2 - 0) (max possible score 4 - 1)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team B stars first.
The input is invalid no matter which team starts first, so it's considered
invalid.
Au contraire, voici un exemple valable:
Team A: X X X
Team B: - - -
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: - (2 - 0) (max possible score 5 - 3)
Team A: X (3 - 0) (max possible score 5 - 3)
Team B: - (3 - 0) (max possible score 5 - 2)
It can be determined that team A wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
Un autre exemple, cette fois avec des pénalités supplémentaires:
Team A: X - X - - - X -
Team B: - X X - - - X X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: - (1 - 0) (max possible score 4 - 4)
Team B: X (1 - 1) (max possible score 4 - 4)
Team A: X (2 - 1) (max possible score 4 - 4)
Team B: X (2 - 2) (max possible score 4 - 4)
Team A: - (2 - 2) (max possible score 3 - 4)
Team B: - (2 - 2) (max possible score 3 - 3)
Team A: - (2 - 2) (max possible score 2 - 3)
Team B: - (2 - 2) (max possible score 2 - 2)
First 5 penalties result in a tie, so we move on to extra penalties.
Team A: -, Team B: - (2 - 2)
Team A: X, Team B: X (3 - 3)
Team A: -, Team B: X (3 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
Voici une entrée valide où il est trop tôt pour déterminer le gagnant:
Team A: X X - -
Team B: - X - X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: X (2 - 1) (max possible score 5 - 4)
Team A: - (2 - 1) (max possible score 4 - 4)
Team B: - (2 - 1) (max possible score 4 - 3)
Team A: - (2 - 1) (max possible score 3 - 3)
Team B: X (2 - 2) (max possible score 3 - 3)
The input has ended before the winner can be determined, so it's valid if team A
starts first. Therefore, the input is valid.
Enfin, voici une entrée où les longueurs des listes diffèrent:
Team A: - - -
Team B: X X - X
Since team B shot more penalties, it starts first:
Team B: X (0 - 1) (max possible score 5 - 5)
Team A: - (0 - 1) (max possible score 4 - 5)
Team B: X (0 - 2) (max possible score 4 - 5)
Team A: - (0 - 2) (max possible score 3 - 5)
Team B: - (0 - 2) (max possible score 3 - 4)
Team A: - (0 - 2) (max possible score 2 - 4)
Team B: X (0 - 3) (max possible score 2 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid.
Règles
- L'équipe qui tire en premier peut être A ou B, vous ne pouvez pas supposer que l'on tirera toujours en premier.
- Les listes auront soit la même longueur, soit leur longueur différera d'une unité.
- Vous pouvez choisir deux valeurs distinctes et cohérentes pour représenter les pénalités marquées / non marquées.
- Les listes peuvent également être représentées sous forme d'entiers convertis à partir de la base bijective 2, de chaînes ou du format de liste natif de votre langue. Si un format de base bijective 2 est choisi, les règles d'entrée s'appliquent aux nombres convertis en base bijective 2 (donc les chiffres
1
et2
peuvent signifier respectivement notés et non notés ou non notés et notés). Le binaire régulier n'est pas autorisé , car on ne peut pas déterminer la présence de zéros de tête dans la représentation binaire prévue. - C'est le code-golf , donc la solution la plus courte l'emporte. Cependant, ne vous découragez pas de répondre même s'il semble que votre langue ne peut pas «battre les langues spécialisées».
Cas de test
Dans ces cas de test, un 0
testament représente un objectif nul et un 1
testament représente un objectif.
Format:
[Team A], [Team B]
Entrées valides:
[], []
[0], [0]
[0], [1]
[1], [1]
[0], []
[1, 1, 1, 1], [0, 0, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0, 1]
[1, 1, 1], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Entrées non valides:
[0, 1, 1, 1, 1], [0, 1, 1, 0, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1]
[1, 1, 1, 0], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
[1, 0, 1, 0, 1], [0, 1, 0, 1, 0, 1]
[0, 0, 0, 0, 1], [0, 1, 1, 1, 0]
[[0,0],[1,1]]
(ou tout cas de test où l'une des deux listes internes contient 2 éléments) est vrai, car le jeu est toujours en cours (tout comme les cas de test avec [[0],[1]]
ou [[0],[]]
sont toujours en cours)?