Diese Frage ist inspiriert von dem laufenden Turnier "Das von Gentlemen gespielte Hooligan-Spiel", der Rugby-Weltmeisterschaft , die gerade die Poolphase abgeschlossen hat. Das Turnier besteht aus 20 Teams, die in 4 Pools zu je 5 Teams aufgeteilt sind. Während der Poolphase spielt jedes Team gegen alle anderen Teams in seinem Pool (insgesamt 10 Spiele pro Pool), und die beiden besten Teams jedes Pools erreichen die Ko-Phase.
Am Ende der Poolphase gibt es für jeden Pool eine Tabelle mit der Anzahl der Siege, Verluste und Unentschieden für jedes Team. Die Herausforderung für diese Frage besteht darin, ein Programm zu schreiben, das die Anzahl der Siege, Verluste und Unentschieden für jedes Team in einem Pool eingibt und aus diesen Informationen die individuellen Ergebnisse jedes der 10 Spiele (wer hat gewonnen, verloren oder gegen wen gezogen) ausgibt ) wenn möglich oder gibt eine Fehlermeldung aus, wenn nicht.
Hier ist zum Beispiel die Tabelle für Pool D des diesjährigen Turniers:
Win Loss Draw
Canada 0 4 0
France 3 1 0
Ireland 4 0 0
Italy 2 2 0
Romania 1 3 0
Aus diesen Informationen können wir schließen, dass Irland gegen Kanada, Frankreich, Italien und Rumänien gewonnen hat, weil sie alle ihre Spiele gewonnen haben. Frankreich muss gegen Kanada, Italien und Rumänien gewonnen, aber gegen Irland verloren haben, weil es nur einen verloren hat und es gegen das ungeschlagene Irland gewesen sein muss. Wir haben gerade herausgefunden, dass Italien gegen Irland und Frankreich verloren hat, also müssen sie gegen Kanada und Rumänien gewonnen haben. Kanada hat alle Spiele verloren, und so muss Rumäniens Sieg gegen Kanada gewesen sein.
Canada France Ireland Italy Romania
Canada - L L L L
France W - L W W
Ireland W W - W W
Italy W L L - W
Romania W L L L -
Hier ist ein komplizierteres (fiktives) Beispiel:
Win Loss Draw
Canada 3 1 0
France 1 2 1
Ireland 0 3 1
Italy 0 2 2
Romania 4 0 0
In diesem Fall können wir schließen, dass Rumänien gegen Kanada, Frankreich, Italien und Irland gewonnen hat, weil sie alle ihre Spiele gewonnen haben. Kanada muss gegen Irland, Italien und Frankreich gewonnen, aber gegen Rumänien verloren haben. Wir haben gerade herausgefunden, dass Italien gegen Rumänien und Kanada verloren hat, also müssen sie gegen Frankreich und Irland unentschieden gespielt haben. Das bedeutet, dass Irland gegen Italien unentschieden gespielt und gegen alle anderen verloren hat. Daher muss Frankreich Irland geschlagen, gegen Italien unentschieden und gegen Kanada und Rumänien verloren haben.
Canada France Ireland Italy Romania
Canada - W W W L
France L - W D L
Ireland L L - D L
Italy L D D - L
Romania W W W W -
Einige Tabellen sind unlösbar, zum Beispiel der diesjährige Pool B, in dem 3 Teams die gleichen W / L / D-Summen erhalten haben:
Win Loss Draw
Japan 3 1 0
Samoa 1 3 0
Scotland 3 1 0
South Africa 3 1 0
United States 0 4 0
Einige Tabellen mit doppelten Zeilen sind jedoch lösbar, wie diese (fiktive):
Win Loss Draw
Japan 4 0 0
Samoa 0 3 1
Scotland 2 2 0
South Africa 0 3 1
United States 3 1 0
Eingang
Ihr Programm oder Ihre Funktion sollte 15 Zahlen akzeptieren, die die Gewinn-, Verlust- und Ziehungssummen für jedes der 5 Teams angeben. Sie können ein beliebiges Trennzeichen verwenden, die Zahlen in Zeilen- oder Spaltenhauptreihenfolge eingeben und die Zahlen entweder über stdin akzeptieren oder über ein Array an eine Funktion übergeben.
Da Gewinne + Verluste + Unentschieden = 4 sind, können Sie einen der Werte weglassen und auf Wunsch aus den anderen herausarbeiten, sodass Sie nur 10 Zahlen eingeben müssen.
Sie müssen keine Teamnamen eingeben.
Beispieleingabe:
3 1 0
1 2 1
0 3 1
0 2 2
4 0 0
Ausgabe
Die Ausgabe Ihres Programms oder Ihrer Funktion sollte in Form eines 5 x 5-Rasters erfolgen, das auf stdout gedruckt wird, oder eines Arrays, das von einer Funktion zurückgegeben wird. Jedes Element sollte angeben, ob das in der Zeilenposition angegebene Team das Team in der Spaltenposition gewonnen, verloren oder unentschieden gespielt hat. Die Zeilenreihenfolge für die Ausgabe sollte mit der Eingabe übereinstimmen. Sie können definieren, was einen Gewinn, einen Verlust oder ein Unentschieden bedeutet, sodass die Buchstaben W, L, D oder die Ziffern 0 1 2 oder was auch immer Sie möchten verwendet werden können, solange sie klar definiert und voneinander unterscheidbar sind. Diagonale Elemente sind undefiniert, Sie können alles ausgeben, aber es sollte in jedem Fall gleich sein. Werte können durch Kommas, Leerzeichen oder ein beliebiges Zeichen getrennt werden oder nicht. Falls gewünscht, können sowohl Eingabe als auch Ausgabe mit allen Werten in einer einzelnen Zeile formatiert werden.
Wenn eine Tabelle keine eindeutige Lösung hat, müssen Sie eine einfache Fehlermeldung Ihrer Wahl ausgeben.
Beispielausgabe:
- W W W L
L - W D L
L L - D L
L D D - L
W W W W -
Beispielausgabe für unlösbare Tabelle:
dunno mate
Dies ist Code Golf, damit das kürzeste Programm in Bytes gewinnt.
Bildbezogen (Japan versus Südafrika):