En el fútbol de asociación (también conocido como fútbol), un lanzamiento de penalti es la segunda medida de desempate que se puede usar en un partido que no puede terminar en un empate, después de un tiempo extra (es decir, tiempo extra de fútbol de asociación).
En una tanda de penaltis, el árbitro principal arroja una moneda para determinar en qué objetivo ocurre la tanda de tiros, y luego lanza otra moneda para determinar qué equipo comienza primero. Sin embargo, lo único relevante para este desafío es lo que sucede entonces, que se describe a continuación.
Cada equipo tiene 5 penalizaciones disponibles al inicio, y el puntaje de penalización es 0-0. Si, en algún momento, las penalizaciones restantes de un equipo no son suficientes para cambiar el equipo ganador actual, el tiroteo se detiene.
Si no quedan penalizaciones restantes, pero los puntos de ambos equipos son iguales, se otorga una penalización adicional a ambos equipos. Esto se repite hasta que los puntos no sean iguales.
Después de que el tiroteo se detiene, el equipo con el mayor puntaje de penalización gana el juego.
Desafío
Su desafío es, dadas dos listas A
y B
representando qué penalizaciones anotaron el equipo A y el equipo B, respectivamente, para determinar si representan un penal penal válido. Un tiroteo es válido si se puede alcanzar el estado representado por la entrada, independientemente de si se puede determinar el equipo ganador. Tenga en cuenta que posiblemente tenga que probar ambos escenarios (inicio del Equipo A, inicio del Equipo B), ya que, si el estado descrito en la entrada es accesible para al menos un escenario, la entrada es válida. Si las longitudes de las listas son diferentes, el equipo representado por el más largo comienza primero (solo puede tener un elemento más que el otro, y el equipo de la lista más corta no puede comenzar, ya que el equipo de la lista más larga lanzaría dos penalizaciones) en una fila, ya que la lista más corta se agotará prematuramente).
Ejemplos detallados
Puede saltar a la sección de Reglas a continuación, estas son solo para ayudar a resolver el desafío.
Suponga que obtiene este tiroteo como entrada, donde -
significa que no se marcó ningún gol y X
significa que se marcó un gol (no es válido):
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.
Por el contrario, aquí hay un ejemplo válido:
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.
Otro ejemplo, esta vez con penalizaciones adicionales:
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.
Aquí hay una entrada válida donde es demasiado pronto para determinar el ganador:
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.
Finalmente, aquí hay una entrada donde las longitudes de las listas difieren:
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.
Reglas
- El equipo que dispara primero puede ser A o B, no puedes asumir que uno siempre disparará primero.
- Las listas tendrán la misma longitud o sus longitudes diferirán en una.
- Puede elegir dos valores distintos y consistentes para representar penalizaciones puntuadas / no puntuadas.
- Las listas también se pueden representar como enteros convertidos a partir de la base 2 del bijective , cadenas o el formato de lista nativo de su idioma. Si se elige un formato biyectiva base 2, se aplican las reglas de entrada a los números convertidos a la base biyectiva 2 (de modo dígitos
1
y2
bien puede significar anotada y no precortada o no precortada y obtuvo respectivamente). El binario regular no está permitido , ya que no se puede determinar la presencia de ceros a la izquierda en la representación binaria prevista. - Este es el código de golf , por lo que gana la solución más corta. Sin embargo, no se desanime de responder incluso si parece que su idioma no puede "vencer a los especializados".
Casos de prueba
En estos casos de prueba, un 0
representará un no objetivo y un 1
representará un objetivo.
Formato:
[Team A], [Team B]
Entradas válidas:
[], []
[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]
Entradas inválidas:
[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]
fuente
[[0,0],[1,1]]
(o cualquier caso de prueba en el que una de las dos listas internas tiene 2 elementos) es verdad, ya que el juego todavía está en curso (al igual que los casos de prueba con[[0],[1]]
o[[0],[]]
aún están en progreso).