Esta pregunta está inspirada en el torneo en curso del "juego del hooligan jugado por caballeros", la Copa Mundial de Rugby , que acaba de completar la etapa de billar. Hay 20 equipos en el torneo, y se dividen en 4 grupos de 5 equipos cada uno. Durante la etapa de grupo, cada equipo juega contra todos los otros equipos en su grupo (un total de 10 partidos por grupo), y los 2 mejores equipos de cada grupo avanzan a la etapa eliminatoria.
Al final de la etapa de grupo hay una tabla para cada grupo que muestra el número de victorias, pérdidas y empates para cada equipo. El desafío para esta pregunta es escribir un programa que ingrese el conteo de victorias, derrotas y empates para cada equipo en un grupo, y de esa información salgan los resultados individuales de cada uno de los 10 partidos (quién ganó, perdió o empató contra quién) ) si es posible o muestra un mensaje de error si no.
Por ejemplo, aquí está la tabla para el Grupo D del torneo de este año:
Win Loss Draw
Canada 0 4 0
France 3 1 0
Ireland 4 0 0
Italy 2 2 0
Romania 1 3 0
A partir de esta información, podemos deducir que Irlanda ganó contra Canadá, Francia, Italia y Rumania, porque ganaron todos sus juegos. Francia debe haber ganado contra Canadá, Italia y Rumania, pero perdió ante Irlanda, porque solo perdió uno y debe haber sido contra la invicta Irlanda. Acabamos de descubrir que Italia perdió contra Irlanda y Francia, por lo que deben haber ganado contra Canadá y Rumania. Canadá perdió todos sus juegos, por lo que la victoria de Rumania debe haber sido contra 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 -
Aquí hay un ejemplo más complicado (ficticio):
Win Loss Draw
Canada 3 1 0
France 1 2 1
Ireland 0 3 1
Italy 0 2 2
Romania 4 0 0
En este caso, podemos deducir que Rumania ganó contra Canadá, Francia, Italia e Irlanda, porque ganaron todos sus juegos. Canadá debe haber ganado contra Irlanda, Italia y Francia, pero perdió ante Rumania. Acabamos de descubrir que Italia perdió contra Rumania y Canadá, por lo que deben haber empatado contra Francia e Irlanda. Eso significa que Irlanda empató con Italia y perdió con todos los demás, y por lo tanto Francia debió vencer a Irlanda, empató con Italia y perdió con Canadá y Rumania.
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 -
Algunas tablas son insolubles, por ejemplo, el Grupo B de este año, en el que 3 equipos obtuvieron los mismos totales 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
Sin embargo, algunas tablas con filas duplicadas son solucionables, como esta (ficticia):
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
Su programa o función debe aceptar 15 números que especifiquen los totales de ganancias, pérdidas y sorteos para cada uno de los 5 equipos. Puede usar cualquier delimitador que desee, ingresar los números en el orden principal de fila o columna y aceptar los números a través de stdin o pasarlos a través de una matriz a una función.
Debido a que victorias + pérdidas + empates = 4, puede omitir uno de los valores y resolverlo de los demás si lo desea, lo que significa que solo tiene que ingresar 10 números.
No necesita ingresar ningún nombre de equipo.
Entrada de muestra:
3 1 0
1 2 1
0 3 1
0 2 2
4 0 0
Salida
La salida de su programa o función debe tener la forma de una cuadrícula de 5 x 5 impresa en stdout, o una matriz devuelta desde una función. Cada elemento debe especificar si el equipo dado en la posición de la fila ganó, perdió o empató contra el equipo en la posición de la columna. El orden de las filas para la salida debe coincidir con la entrada. Puede definir qué denota una victoria, pérdida o empate, de modo que las letras W, L, D o los dígitos 0 1 2 o lo que desee se pueden usar siempre que estén claramente definidos y se puedan distinguir entre sí. Los elementos diagonales no están definidos, puede generar cualquier cosa, pero debe ser lo mismo en cada caso. Los valores se pueden separar con comas, espacios o cualquier carácter que desee, o no carácter. Tanto la entrada como la salida pueden formatearse con todos los valores en una sola línea si se desea.
Si una tabla no tiene una solución única, debe enviar un mensaje de error simple de su elección.
Salida de muestra:
- W W W L
L - W D L
L L - D L
L D D - L
W W W W -
Salida de muestra para tabla insoluble:
dunno mate
Este es el código de golf, por lo que gana el programa más corto en bytes.
Relacionado con la foto (Japón versus Sudáfrica):