Этот вопрос вдохновлен продолжающимся турниром "хулиганской игры, в которую играют джентльмены", чемпионатом мира по регби , который только что завершил этап в бассейне. В турнире 20 команд, и они разделены на 4 группы по 5 команд в каждой. На этапе пула каждая команда играет против всех других команд в своем пуле (всего 10 матчей за пул), и две лучшие команды каждого пула переходят в стадию нокаута.
В конце этапа пула есть таблица для каждого пула, показывающая количество побед, поражений и ничьих для каждой команды. Задача для этого вопроса состоит в том, чтобы написать программу, которая вводит количество побед, поражений и ничьих для каждой команды в пуле, и из этой информации выводит индивидуальные результаты каждого из 10 матчей (кто выиграл, проиграл или сыграл против кого ) если возможно или выводит сообщение об ошибке, если нет.
Например, вот таблица для пула D турнира этого года:
Win Loss Draw
Canada 0 4 0
France 3 1 0
Ireland 4 0 0
Italy 2 2 0
Romania 1 3 0
Из этой информации мы можем сделать вывод, что Ирландия выиграла у Канады, Франции, Италии и Румынии, потому что они выиграли все свои игры. Франция, должно быть, выиграла у Канады, Италии и Румынии, но проиграла Ирландии, потому что они потеряли только одного, и это должно быть непобежденной Ирландии. Мы только что выяснили, что Италия проиграла Ирландии и Франции, поэтому они, должно быть, выиграли у Канады и Румынии. Канада проиграла все свои игры, и поэтому победа Румынии была над Канадой.
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 -
Вот более сложный (вымышленный) пример:
Win Loss Draw
Canada 3 1 0
France 1 2 1
Ireland 0 3 1
Italy 0 2 2
Romania 4 0 0
В этом случае мы можем сделать вывод, что Румыния выиграла у Канады, Франции, Италии и Ирландии, потому что они выиграли все свои игры. Канада, должно быть, выиграла у Ирландии, Италии и Франции, но проиграла Румынии. Мы только что выяснили, что Италия проиграла Румынии и Канаде, поэтому они должны были сыграть против Франции и Ирландии. Это означает, что Ирландия сыграла вничью с Италией и проиграла всем остальным, и поэтому Франция, должно быть, победила Ирландию, сыграла вничью с Италией и уступила Канаде и Румынии.
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 -
Некоторые таблицы неразрешимы, например, пул B этого года, в котором 3 команды получили одинаковые итоги 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
Однако некоторые таблицы с дублирующимися строками разрешимы, например, эта (вымышленная):
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
вход
Ваша программа или функция должна принимать 15 номеров, указывающих суммы побед, поражений и ничьей для каждой из 5 команд. Вы можете использовать любой желаемый разделитель, вводить числа в главном порядке строк или столбцов и принимать числа либо через стандартный ввод, либо через массив в функцию.
Поскольку выигрыши + проигрыши + ничьи = 4, вы можете опустить одно из значений и поработать с другими, если хотите, то есть вам нужно всего лишь ввести 10 чисел.
Вам не нужно вводить названия команд.
Пример ввода:
3 1 0
1 2 1
0 3 1
0 2 2
4 0 0
Выход
Выходные данные вашей программы или функции должны быть в виде сетки 5 x 5, напечатанной на стандартный вывод, или массива, возвращаемого функцией. Каждый элемент должен указывать, выиграла ли команда, указанная в позиции строки, проиграла или сыграла ничью с командой в позиции столбца. Порядок строк для выходных данных должен соответствовать входным. Вы можете определить, что означает выигрыш, проигрыш или ничью, поэтому можно использовать буквы W, L, D или цифры 0 1 2 или все, что вы хотите, при условии, что они четко определены и могут отличаться друг от друга. Диагональные элементы не определены, вы можете вывести что угодно, но оно должно быть одинаковым в каждом случае. Значения могут быть разделены запятыми, пробелами или любым другим символом, который вам нравится, или не символом. И вход и выход могут быть отформатированы со всеми значениями в одной строке, если это необходимо.
Если таблица не имеет уникального решения, вы должны вывести простое сообщение об ошибке по вашему выбору.
Пример вывода:
- W W W L
L - W D L
L L - D L
L D D - L
W W W W -
Пример вывода для неразрешимой таблицы:
dunno mate
Это код гольф, поэтому выигрывает самая короткая программа в байтах.
Пик связан (Япония против Южной Африки):