Als Fan einer höchstens mäßig erfolgreichen Fußball- BE- Mannschaft frage ich mich gegen Ende der Saison oft, ob meine Lieblingsmannschaft noch theoretische Chancen hat, Meister zu werden. Ihre Aufgabe bei dieser Herausforderung ist es, diese Frage für mich zu beantworten.
Eingang
Sie erhalten drei Eingaben: die aktuelle Tabelle, die Liste der verbleibenden Spiele und die aktuelle Position der Mannschaft, an der wir interessiert sind.
Eingabe 1: Die aktuelle Tabelle , eine Folge von Zahlen, die die i- te Zahl sind, sind die Punkte, die Team i bisher gesammelt hat . Beispielsweise [93, 86, 78, 76, 75]codiert die Eingabe
die folgende Tabelle (nur die letzte Spalte ist von Bedeutung):
Eingabe 2 : Die verbleibenden Übereinstimmungen , eine Folge von Tupeln, wobei jedes Tupel ( i , j ) für eine verbleibende Übereinstimmung zwischen Team i und j steht . Im obigen Beispiel würde eine zweite Eingabe von [(1,2), (4,3), (2,3), (3,2), (1,2)]bedeuten, dass die verbleibenden Übereinstimmungen sind:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Eingabe 3: Die aktuelle Position des Teams, an dem wir interessiert sind. Eine Eingabe 2für das obige Beispiel würde beispielsweise bedeuten, dass wir wissen möchten, ob Tottenham noch Champion werden kann.
Ausgabe
Für jede verbleibende Übereinstimmung der Form ( i , j ) gibt es drei mögliche Ergebnisse:
- Team i gewinnt: Team i erhält 3 Punkte , Team j erhält 0 Punkte
- Team j gewinnt: Team i erhält 0 Punkte , Team j erhält 3 Punkte
- Unentschieden: Team i und j erhalten beide 1 Punkt
Sie müssen einen Wahrheitswert ausgeben, wenn für alle verbleibenden Spiele ein Ergebnis vorliegt, sodass am Ende kein anderes Team mehr Punkte hat als das in der 3. Eingabe angegebene Team. Andernfalls geben Sie einen falschen Wert aus.
Beispiel : Betrachten Sie die beispielhafte Eingabe aus dem obigen Abschnitt:
Eingang 1 = [93, 86, 78, 76, 75], Eingang 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)], Eingang 3 =2
Wenn das Team 2alle verbleibenden Spiele gewinnt (dh (1,2), (2,3), (3,2), (1,2)), erhält es 4 * 3 = 12 zusätzliche Punkte; Keines der anderen Teams erhält Punkte aus diesen Spielen. Nehmen wir an, das andere verbleibende Spiel (dh (4,3)) ist ein Unentschieden. Dann wären die Endergebnisse:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Dies bedeutet, dass wir für die verbleibenden Spiele bereits einige Ergebnisse erzielt haben 2, sodass kein anderes Team mehr Punkte als das Team hat. Daher muss die Ausgabe für diese Eingabe wahr sein.
Einzelheiten
- Sie können annehmen, dass die erste Eingabe eine geordnete Sequenz ist, dh für i < j ist der i- te Eintrag gleich oder größer als der j- te Eintrag. Die erste Eingabe kann als Liste, Zeichenfolge oder dergleichen verwendet werden.
- Sie können die zweite Eingabe als Zeichenfolge, Liste von Tupeln oder dergleichen verwenden. Alternativ können Sie es als zweidimensionales Array verwenden,
awobeia[i][j]die Anzahl der Einträge des Formulars(i,j)in der Liste der verbleibenden Übereinstimmungen angegeben ist. Zum Beispiela[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1entspricht[(1,2), (4,3), (2,3), (3,2), (1,2)]. - Für die zweite und dritte Eingabe können Sie eine 0-Indizierung anstelle einer 1-Indizierung annehmen.
- Sie können die drei Eingaben in beliebiger Reihenfolge vornehmen.
Bitte geben Sie das genaue Eingabeformat an, das Sie in Ihrer Antwort ausgewählt haben.
Seitenknoten : Das dieser Herausforderung zugrunde liegende Problem hat sich in " Fußball-Eliminierung ist nach der 3-Punkte-Regel schwer zu entscheiden " als NP-vollständig erwiesen . Interessanterweise wird das Problem in der Polynomzeit lösbar, wenn nur zwei Punkte für einen Sieg vergeben werden.
Testfälle
Alle Testfälle im Format sind Input1, Input2, Input3.
Wahrheit:
[93, 86, 78, 76, 75],[(1,2), (4,3), (2,3), (3,2), (1,2)],2[50],[],1[10, 10, 10],[],3[15, 10, 8],[(2,3), (1,3), (1,3), (3,1), (2,1)],2
Falsch:
[10, 9, 8],[],2[10, 9, 9],[(2,3), (3,2)],1[21, 12, 11],[(2,1), (1,2), (2,3), (1,3), (1,3), (3,1), (3,1)],2
Gewinner
Dies ist Code-Golf , daher gewinnt die kürzeste richtige Antwort (in Bytes). Der Gewinner wird eine Woche nach der ersten richtigen Antwort ausgewählt.
