채팅 토론에서 @ MartinBüttner에게 감사드립니다.
마작 은 아시아에서 매우 인기있는 타일 게임입니다. 일반적으로 4 명의 플레이어와 함께 플레이하며 게임의 목표는 타일을 사용하여 먼저 유효한 핸드를 완성하는 것입니다. 이 과제를 위해 PPCG 마작이라는 간단한 버전의 게임을 고려할 것입니다.
- PPCG 마작에서, 세 가지 복이있다 m
, p
그리고 s
- 그리고 타일에서 번호가 1
에 9
. 이 각 타일의 네 개의 사본을 정확하게, 그리고 타일의 소송 다음의 번호 (예를 붙이고 3m
, 9s
).
완성 된 PPCG 마작 핸드는 총 14 개의 타일에 대해 3 세트와 4 세트로 구성됩니다.
세 세트는 다음 중 하나 일 수 있습니다.
- 동일한 타일 중 3 개 (예 :
4s 4s 4s
, 아님4m 4p 4s
) 또는 - 동일한 소송에서 3 개의 연속 타일 시퀀스 (예 :
1s 2s 3s
또는6p 7p 8p
그렇지 않은3s 4m 5m
또는3p 5p 7p
) 시퀀스는 랩핑되지 않습니다 (따라서9m 1m 2m
유효하지 않습니다).
한 쌍은 단순히 두 개의 동일한 타일입니다 (예 :) 5s 5s
.
도전
프로그램은 공백으로 구분 된 13 개의 타일을 받게되며 각 타일은 4 번 이상 나타나지 않습니다. 전체 프로그램이나 문자열을받는 함수를 작성할 수 있습니다.
당신의 임무는 손에 추가 될 때 완성 된 PPCG 마작 핸드를 형성 할 수있는 가능한 모든 14 번째 타일 ( "대기")을 찾는 것입니다. 출력 된 타일은 공백으로 분리해야하지만 순서는 상관 없습니다. 선행 또는 후행 공백이 허용됩니다.
프로그램은 1 분을 넘지 않는 적당한 시간 내에 실행되어야합니다.
예
Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s
Output: 9s
Input: 1m 1m 1m 3m 3m 3m 5m 5m 5m 2s 3s 7p 8p
Output:
Input: 1m 2m 2m 3m 3m 3m 3m 4m 1s 1s 9s 9s 9s
Output: 1s
Input: 1m 1m 1m 2m 3m 4m 5m 6m 7m 8m 9m 9m 9m
Output: 1m 2m 3m 4m 5m 6m 7m 8m 9m
Input: 1m 1m 1m 5p 2m 3m 5p 7s 8s 5p 9s 9s 9s
Output: 1m 4m 6s 9s
첫 번째 예에서는 1m 4s 7p 3m
모두 기존의 삼중 항 9s
을 형성 하여 고독한 쌍을 형성합니다.
두 번째 예에서 2s 3s
및 7p 8p
은 시퀀스 만 형성 할 수 있으며 나머지 타일은 트리플렛 만 형성 할 수 있습니다. 따라서 쌍을 형성 할 수 없으며 출력이 없습니다.
세 번째 예에서 손은로 나뉩니다 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s
. 일반적으로 이것은 대기 시간 3m 1s
이지만 4 3m
개가 모두 사용되었으므로 사용 가능한 유일한 대기 시간은 1s
입니다.
네 번째 예에서는 모든 m
타일이 손을 완성합니다. 예를 들어, 예를 들어 완성 된 핸드를 1m
가질 수 있습니다 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9m
.
나머지 네 번째 예제와 다섯 번째 예제를 해결해보십시오. :)