Nel calcio associativo (noto anche come calcio), un tiro di rigore è la seconda misura del pareggio che può essere utilizzata in una partita che non può finire in parità, dopo i tempi supplementari (ad es. Il calcio straordinario dell'associazione).
In un tiro di rigore, l'arbitro principale lancia una moneta per determinare a quale goal avviene il tiro, quindi lancia un'altra moneta per determinare quale squadra inizia per prima. Tuttavia, l'unica cosa rilevante per questa sfida è ciò che accade allora, descritto di seguito.
Ogni squadra ha 5 penalità disponibili all'inizio e il punteggio della penalità è 0-0. Se, in qualsiasi momento, le penalità rimanenti di una squadra non sono sufficienti per cambiare la squadra attualmente vincente, lo sho-stop si interrompe.
Se non ci sono penalità rimanenti, ma i punti di entrambe le squadre sono uguali, viene accordata una penalità aggiuntiva per entrambe le squadre. Questo si ripete fino a quando i punti non sono uguali.
Dopo l'arresto del tiro, la squadra con il punteggio più alto vince la partita.
Sfida
La tua sfida è, dato due elenchi Ae Bche rappresentano rispettivamente i rigori segnati rispettivamente dalla squadra A e dalla squadra B, per determinare se rappresentano un rigore valido. Una sparatoria è valida se è possibile raggiungere lo stato rappresentato dall'input, indipendentemente dal fatto che la squadra vincente possa essere determinata. È possibile che sia necessario eseguire il test per entrambi gli scenari (avvio della squadra A, avvio della squadra B) poiché, se lo stato descritto nell'input è raggiungibile per almeno uno scenario, l'input è valido. Se le lunghezze delle liste sono diverse, la squadra rappresentata da quella più lunga inizia per prima (può avere solo un elemento in più rispetto all'altra e la squadra della lista più corta non può iniziare, da allora la squadra della lista più lunga tirerebbe due penalità di seguito, poiché l'elenco più breve verrà esaurito prematuramente).
Esempi dettagliati
Puoi saltare alla sezione Regole di seguito, solo per aiutare a risolvere la sfida.
Supponiamo di ottenere questo tiro fuori come input, dove -significa che nessun goal è stato segnato e Xsignifica che un goal è stato segnato (non è valido):
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.
Al contrario, ecco un esempio valido:
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 altro esempio, questa volta con penalità extra:
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.
Ecco un input valido in cui è troppo presto per determinare il vincitore:
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.
Infine, ecco un input in cui le lunghezze delle liste differiscono:
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.
Regole
- La squadra che spara per prima può essere A o B, non puoi presumere che uno tiri sempre per primo.
- Gli elenchi avranno la stessa lunghezza o le loro lunghezze differiranno di una.
- Puoi scegliere due valori distinti e coerenti per rappresentare penalità segnate / non segnate.
- Gli elenchi possono anche essere rappresentati come numeri interi convertiti dalla base biiettiva 2, stringhe o dal formato elenco nativo della tua lingua. Se viene scelto un formato di base 2 biiettivo, le regole di input si applicano ai numeri convertiti in base biiettiva 2 (quindi cifre
1e2possono significare rispettivamente punteggio e non segnato o non segnato e segnato). Il binario regolare non è consentito , poiché non è possibile determinare la presenza di zeri iniziali nella rappresentazione binaria prevista. - Questo è code-golf , quindi vince la soluzione più breve. Tuttavia, ti preghiamo di non scoraggiarti dal rispondere anche se sembra che la tua lingua non possa "battere quelle specializzate".
Casi test
In questi casi di test, una 0volontà rappresenterà un non-obiettivo e una 1volontà rappresenterà un obiettivo.
Formato:
[Team A], [Team B]
Ingressi validi:
[], []
[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]
Ingressi non validi:
[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]](o qualsiasi caso di test in cui una delle due liste interne ha 2 elementi) è vero, dal momento che il gioco continua (proprio come i casi di test con [[0],[1]]o [[0],[]]sono ancora in corso)?