이 질문은 풀장 무대를 막 완료 한 럭비 월드컵 (Rugby World Cup ) 의 "훌리건 게임"에 대한 지속적인 토너먼트에서 영감을 얻은 것 입니다. 토너먼트에는 20 개의 팀이 있으며 각각 5 개의 팀으로 구성된 4 개의 풀로 나뉩니다. 풀 스테이지 동안 각 팀은 풀에있는 다른 모든 팀과 경기를하며 (풀 당 총 10 경기) 각 풀의 상위 2 팀이 녹아웃 스테이지로 진행합니다.
풀 단계가 끝나면 각 팀의 승리, 패배 및 추첨 횟수를 보여주는 각 풀의 테이블이 있습니다. 이 질문에 대한 도전은 풀의 각 팀에 대한 승, 패 및 무승부를 입력하는 프로그램을 작성하는 것입니다. 그리고 그 정보에서 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
입력
귀하의 프로그램 또는 기능은 5 개 팀 각각에 대해 승리, 손실 및 추첨 합계를 지정하는 15 개의 숫자를 수용해야합니다. 원하는 구분 기호를 사용하고, 행 또는 열 주요 순서로 숫자를 입력하고, stdin을 통해 또는 배열을 통해 함수에 전달 된 숫자를 승인 할 수 있습니다.
승 + 손실 + 무승부 = 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
이것은 코드 골프이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다.
그림 관련 (일본과 남아프리카) :