Esta questão é inspirada no torneio em andamento do "jogo do hooligan jogado por cavalheiros", a Copa do Mundo de Rugby , que acaba de completar a etapa da piscina. Existem 20 equipes no torneio, e elas são divididas em 4 grupos de 5 equipes cada. Durante a fase da piscina, cada equipe joga contra todas as outras equipes da piscina (um total de 10 partidas por piscina), e as 2 principais equipes de cada piscina avançam para a fase eliminatória.
No final do estágio da piscina, há uma tabela para cada piscina mostrando o número de vitórias, derrotas e empates de cada equipe. O desafio para essa pergunta é escrever um programa que insira a contagem de vitórias, derrotas e empates de cada equipe em um pool e, a partir dessa informação, produz os resultados individuais de cada uma das 10 partidas (quem venceu, perdeu ou empatou contra quem ) se possível ou emite uma mensagem de erro, se não.
Por exemplo, aqui está a tabela para o Pool D do torneio deste ano:
Win Loss Draw
Canada 0 4 0
France 3 1 0
Ireland 4 0 0
Italy 2 2 0
Romania 1 3 0
Com base nessas informações, podemos deduzir que a Irlanda venceu o Canadá, França, Itália e Romênia, porque venceu todos os seus jogos. A França deve ter vencido contra o Canadá, Itália e Romênia, mas perdeu para a Irlanda, porque perdeu apenas um e deve ter sido para a Irlanda invicta. Acabamos de descobrir que a Itália perdeu para a Irlanda e a França, então eles devem ter vencido contra o Canadá e a Romênia. O Canadá perdeu todos os jogos e, portanto, a vitória da Romênia deve ter sido contra o Canadá.
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 -
Aqui está um exemplo mais complicado (fictício):
Win Loss Draw
Canada 3 1 0
France 1 2 1
Ireland 0 3 1
Italy 0 2 2
Romania 4 0 0
Nesse caso, podemos deduzir que a Romênia venceu o Canadá, França, Itália e Irlanda, porque venceu todos os jogos. O Canadá deve ter vencido contra a Irlanda, Itália e França, mas perdeu para a Romênia. Acabamos de descobrir que a Itália perdeu para a Romênia e o Canadá, então eles devem ter empatado contra a França e a Irlanda. Isso significa que a Irlanda empatou com a Itália e perdeu para todos os outros e, portanto, a França deve ter derrotado a Irlanda, empatada com a Itália e perdida para o Canadá e a Romênia.
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 -
Algumas tabelas são insolúveis, por exemplo, o Pool B deste ano, em que três equipes obtiveram os mesmos totais de P / 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
No entanto, algumas tabelas com linhas duplicadas são solucionáveis, como esta (fictícia):
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
Entrada
Seu programa ou função deve aceitar 15 números, especificando os totais de vitórias, derrotas e empates para cada uma das 5 equipes. Você pode usar qualquer delimitador que desejar, inserir os números na ordem principal de linhas ou colunas e aceitar os números via stdin ou passados através de uma matriz para uma função.
Como vitórias + perdas + empates = 4, você pode omitir um dos valores e calculá-lo dos outros, se desejar, o que significa que você só precisa inserir 10 números.
Você não precisa inserir nenhum nome de equipe.
Entrada de amostra:
3 1 0
1 2 1
0 3 1
0 2 2
4 0 0
Resultado
A saída do seu programa ou função deve estar na forma de uma grade 5 x 5 impressa em stdout ou em uma matriz retornada de uma função. Cada elemento deve especificar se a equipe dada na posição da linha venceu, perdeu ou empatou contra a equipe na posição da coluna. A ordem das linhas para a saída deve corresponder à entrada. Você pode definir o que denota uma vitória, perda ou empate, para que as letras W, L, D ou dígitos 0 1 2 ou o que você quiser possa ser usado desde que elas sejam claramente definidas e se diferenciem. Os elementos diagonais são indefinidos, você pode produzir qualquer coisa, mas deve ser o mesmo em cada caso. Os valores podem ser separados por vírgulas, espaços ou qualquer caractere que você goste ou não. Tanto a entrada quanto a saída podem ser formatadas com todos os valores em uma única linha, se desejado.
Se uma tabela não tiver uma solução exclusiva, você deverá enviar uma mensagem de erro simples de sua escolha.
Saída de amostra:
- W W W L
L - W D L
L L - D L
L D D - L
W W W W -
Saída de amostra para tabela não solucionável:
dunno mate
Este é um código de golfe, e o programa mais curto em bytes vence.
Relacionado à foto (Japão versus África do Sul):
