Cette question s'inspire du tournoi en cours du "jeu du hooligan joué par des messieurs", la Coupe du monde de rugby , qui vient de terminer l'étape de la poule. Il y a 20 équipes dans le tournoi, et elles sont divisées en 4 groupes de 5 équipes chacun. Pendant la phase de poule, chaque équipe joue contre toutes les autres équipes de sa poule (un total de 10 matchs par poule), et les 2 meilleures équipes de chaque poule progressent vers la phase à élimination directe.
À la fin de la phase de poule, il y a un tableau pour chaque poule indiquant le nombre de victoires, de défaites et de tirages pour chaque équipe. Le défi pour cette question est d'écrire un programme qui entre le nombre de victoires, de pertes et de tirages pour chaque équipe dans un groupe, et à partir de cette information, les résultats individuels de chacun des 10 matchs (qui a gagné, perdu ou fait match nul contre qui ) si possible ou génère un message d'erreur dans le cas contraire.
Par exemple, voici le tableau de la poule D du tournoi de cette année:
Win Loss Draw
Canada 0 4 0
France 3 1 0
Ireland 4 0 0
Italy 2 2 0
Romania 1 3 0
De ces informations, on peut déduire que l'Irlande a gagné contre le Canada, la France, l'Italie et la Roumanie, car ils ont gagné tous leurs matchs. La France a dû gagner contre le Canada, l'Italie et la Roumanie mais a perdu contre l'Irlande, car ils n'en ont perdu qu'un et ce doit être à l'Irlande invaincue. Nous venons de comprendre que l'Italie a perdu contre l'Irlande et la France, ils ont donc dû gagner contre le Canada et la Roumanie. Le Canada a perdu tous ses matchs et la victoire de la Roumanie a donc dû être contre le Canada.
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 -
Voici un exemple plus compliqué (fictif):
Win Loss Draw
Canada 3 1 0
France 1 2 1
Ireland 0 3 1
Italy 0 2 2
Romania 4 0 0
Dans ce cas, on peut en déduire que la Roumanie a gagné contre le Canada, la France, l'Italie et l'Irlande, car ils ont gagné tous leurs matchs. Le Canada a dû gagner contre l'Irlande, l'Italie et la France, mais a perdu contre la Roumanie. Nous venons de comprendre que l'Italie a perdu contre la Roumanie et le Canada, ils ont donc dû tirer contre la France et l'Irlande. Cela signifie que l'Irlande a fait match nul contre l'Italie et a perdu contre tout le monde, et que la France a donc dû battre l'Irlande, tirer contre l'Italie et perdre contre le Canada et la Roumanie.
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 -
Certaines tables sont insolubles, par exemple le Pool B de cette année, dans lequel 3 équipes ont obtenu les mêmes totaux W / L / D:
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
Cependant, certains tableaux avec des lignes en double peuvent être résolus, comme celui-ci (fictif):
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
Contribution
Votre programme ou votre fonction doit accepter 15 numéros spécifiant les totaux de victoires, de pertes et de tirages pour chacune des 5 équipes. Vous pouvez utiliser le délimiteur de votre choix, saisir les nombres dans l'ordre principal des lignes ou des colonnes et accepter les nombres via stdin ou transmis via un tableau à une fonction.
Parce que victoires + pertes + nuls = 4, vous pouvez omettre l'une des valeurs et la calculer à partir des autres si vous le souhaitez, ce qui signifie que vous n'avez qu'à entrer 10 chiffres.
Vous n'avez pas besoin de saisir de nom d'équipe.
Exemple d'entrée:
3 1 0
1 2 1
0 3 1
0 2 2
4 0 0
Production
La sortie de votre programme ou fonction doit se présenter sous la forme d'une grille 5 x 5 imprimée sur stdout ou d'un tableau renvoyé par une fonction. Chaque élément doit spécifier si l'équipe donnée en position rangée a gagné, perdu ou fait match nul contre l'équipe en position colonne. L'ordre des lignes pour la sortie doit correspondre à l'entrée. Vous pouvez définir ce qui dénote une victoire, une perte ou un match nul, de sorte que les lettres W, L, D ou les chiffres 0 1 2 ou tout ce que vous voulez peuvent être utilisés tant qu'ils sont clairement définis et peuvent être distingués les uns des autres. Les éléments diagonaux ne sont pas définis, vous pouvez tout afficher, mais cela devrait être le même dans chaque cas. Les valeurs peuvent être séparées par des virgules, des espaces ou tout autre caractère que vous aimez, ou pas de caractère. L'entrée et la sortie peuvent être formatées avec toutes les valeurs sur une seule ligne si vous le souhaitez.
Si une table n'a pas de solution unique, vous devez générer un message d'erreur simple de votre choix.
Exemple de sortie:
- W W W L
L - W D L
L L - D L
L D D - L
W W W W -
Exemple de sortie pour une table insoluble:
dunno mate
Il s'agit de code golf, donc le programme le plus court en octets l'emporte.
Concernant la photo (Japon contre Afrique du Sud):