Im Vereinsfußball (auch als Fußball bezeichnet) ist ein Elfmeterschießen die zweite Maßnahme, die nach einer Verlängerung (z. B. Verlängerung des Vereinsfußballs) in einem Spiel durchgeführt werden kann, das nicht mit einem Unentschieden endet.
Bei einem Elfmeterschießen wirft der Hauptschiedsrichter eine Münze, um festzustellen, bei welchem Tor das Schießen stattfindet, und wirft dann eine weitere Münze, um festzustellen, welches Team zuerst startet. Das einzige, was für diese Herausforderung relevant ist, ist das, was dann passiert, wie unten beschrieben.
Jedes Team hat zu Beginn 5 Strafen zur Verfügung und die Strafpunktzahl ist 0-0. Wenn zu irgendeinem Zeitpunkt die verbleibenden Strafen einer Mannschaft nicht ausreichen, um die derzeit siegreiche Mannschaft zu ändern, wird das Schießen eingestellt.
Wenn es keine verbleibenden Strafen gibt, die Punkte beider Teams jedoch gleich sind, erhalten beide Teams eine zusätzliche Strafe. Dies wird wiederholt, bis die Punkte nicht mehr gleich sind.
Nach dem Ende des Schießens gewinnt das Team mit der höchsten Strafpunktzahl das Spiel.
Herausforderung
Ihre Herausforderung ist, da zwei Listen Aund Bdarstellt , welche Strafen Team A und Team B erzielt bzw. zu bestimmen , ob sie eine gültige Elfmeterschießen aus darstellen. Ein Elfmeterschießen ist gültig, wenn der durch die Eingabe dargestellte Zustand erreicht werden kann, unabhängig davon, ob die Siegermannschaft ermittelt werden kann. Beachten Sie, dass Sie möglicherweise beide Szenarien testen müssen (Team A startet, Team B startet), da die Eingabe gültig ist, wenn der in der Eingabe beschriebene Status für mindestens ein Szenario erreichbar ist. Wenn die Längen der Listen unterschiedlich sind, startet das Team, das durch das längere Team dargestellt wird, zuerst (es kann nur ein Element mehr als das andere haben, und das Team der kürzeren Liste kann nicht starten, da das Team der längeren Liste dann zwei Strafen schießt hintereinander, da die kürzere Liste vorzeitig erschöpft wird).
Ausführliche Beispiele
Sie können zum folgenden Abschnitt mit den Regeln springen. Diese dienen nur dazu, die Herausforderung zu lösen.
Angenommen, Sie erhalten dieses Schießen als Eingabe, wobei -bedeutet, dass kein Tor erzielt wurde und Xein Tor erzielt wurde (es ist ungültig):
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.
Im Gegenteil, hier ist ein gültiges Beispiel:
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.
Ein weiteres Beispiel, diesmal mit zusätzlichen Strafen:
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.
Hier ist eine gültige Eingabe, bei der es zu früh ist, um den Gewinner zu bestimmen:
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.
Hier ist eine Eingabe, bei der sich die Listenlängen unterscheiden:
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.
Regeln
- Die Mannschaft, die zuerst schießt, kann entweder A oder B sein. Man kann nicht davon ausgehen, dass immer eine zuerst schießt.
- Die Listen haben entweder die gleiche Länge oder sie unterscheiden sich um eins.
- Sie können zwei unterschiedliche und konsistente Werte auswählen, um erzielte / nicht bewertete Strafen darzustellen.
- Die Listen können auch als Ganzzahlen dargestellt werden, die von der bijektiven Basis 2, Zeichenfolgen oder dem systemeigenen Listenformat Ihrer Sprache konvertiert wurden. Wenn ein bijektives Basis-2-Format ausgewählt wird, gelten die Eingaberegeln für die in bijektives Basis-2-Format umgewandelten Zahlen (also Ziffern
1und2können entweder Punkte und Punkte ohne Punktzahl oder Punkte und Punkte ohne Punktzahl bedeuten). Reguläre Binärdarstellung ist nicht zulässig , da das Vorhandensein führender Nullen in der beabsichtigten Binärdarstellung nicht festgestellt werden kann. - Das ist Code-Golf , also gewinnt die kürzeste Lösung. Bitte lassen Sie sich jedoch nicht von der Beantwortung entmutigen, auch wenn es so aussieht, als könne Ihre Sprache die Fachsprache nicht schlagen.
Testfälle
In diesen Testfällen steht a 0für ein Nichtziel und a 1für ein Ziel.
Format:
[Team A], [Team B]
Gültige Eingaben:
[], []
[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]
Ungültige Eingaben:
[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]]gehe davon aus, dass (oder jeder Testfall, bei dem eine der beiden inneren Listen 2 Elemente enthält) die Wahrheit ist, da das Spiel noch läuft (genau wie die Testfälle mit [[0],[1]]oder [[0],[]]noch im Gange sind)?