브리지 입찰

시간 제한1초메모리 제한128 MB

문제

브리지는 매우 복잡한 카드 게임이며, 그중에서도 입찰(bidding)은 특히 익히기 어려운 부분이다. 플레이어마다 서로 다른 입찰 규약(입찰에 부여하는 의미)을 사용하기 때문에 더욱 어렵다. 이 문제에서는 플레이어가 가장 먼저 해야 할 오프닝 입찰을 제안하는 프로그램을 작성한다. 아래의 입찰 규약은 실제 규약을 단순화한 것이다.

브리지 패는 13장의 카드로 이루어진다. 각 카드는 무늬(스페이드, 하트, 다이아몬드, 클럽)와 숫자(A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2)를 가진다. 여기서 T는 숫자 10을 뜻한다. 입찰하기 전에 플레이어는 패의 하이 카드 포인트(hcp) 개수와 분포(각 무늬에 카드가 몇 장 있는지)를 살핀다. 각 카드가 주는 hcp는 오직 숫자에 의해 결정된다.

숫자hcp
A4
K3
Q2
J1
그 외0

예를 들어 다음과 같은 패를 생각하자.

  • 스페이드: A, 2
  • 하트: K, J, T, 9, 2
  • 다이아몬드: 3
  • 클럽: K, Q, 7, 4, 3

이 패의 hcp는 13이고 분포는 5-5-2-1이다(분포는 보통 내림차순으로 적는다). 균형 분포(balanced distribution)란 4-3-3-3, 4-4-3-2, 5-3-3-2 중 하나를 말한다.

오프닝 입찰은 "Pass"이거나, 레벨(1-7)과 으뜸패(trump suit)의 조합이다. 으뜸패는 높은 순서대로 No Trump, 스페이드, 하트, 다이아몬드, 클럽이다. 패를 평가한 뒤 아래 규칙을 적용해 오프닝 입찰을 정한다. 여러 규칙이 동시에 적용되면 가장 먼저 적용되는 규칙을 사용한다. 분포에서 "x"는 임의의 음이 아닌 정수를 나타내며, 서로 다른 x가 반드시 같을 필요는 없다.

  1. hcp가 10 이상이고 분포가 y-x-x-x(y ≥ 8)이면, y장인 무늬를 4레벨로 입찰한다(프리엠프티브 입찰).
  2. hcp가 10-13이고 분포가 7-x-x-x이면, 7장인 무늬를 3레벨로 입찰한다(프리엠프티브 입찰).
  3. hcp가 8-9이고 분포가 y-x-x-x(y ≥ 7)일 때, y장인 무늬가 스페이드나 하트이면 그 무늬를 2레벨로 입찰한다("위크 투" 입찰).
  4. hcp가 8-11이고 분포가 6-x-x-x이며 6장인 무늬 중 하나가 스페이드나 하트이면, 더 높은 순위의 무늬를 2레벨로 입찰한다("위크 투" 입찰).
  5. hcp가 11-15이고 분포가 4-4-4-1 또는 5-4-4-0이며 스페이드가 4장 이상이면, 다이아몬드를 2레벨로 입찰한다("미니 로만 규약").
  6. hcp가 15-17이고 균형 분포이며 "막힌(stopped)" 무늬가 3개 이상이면, No Trump를 1레벨로 입찰한다. 어떤 무늬가 막혔다는 것은 그 무늬가 다음 중 하나 이상을 포함한다는 뜻이다: A가 있음; K와 그 밖의 카드 1장 이상; Q와 그 밖의 카드 2장 이상; J와 그 밖의 카드 3장 이상.
  7. hcp가 20-22이고 균형 분포이면, No Trump를 2레벨로 입찰한다.
  8. hcp가 22 이상이면, 클럽을 2레벨로 입찰한다.
  9. hcp가 13-16이면: a. 스페이드나 하트에 5장 이상인 무늬가 있으면 그것을 1레벨로 입찰한다. 둘 다 해당되면 더 긴 쪽을, 길이가 같으면 더 높은 순위의 무늬를 입찰한다. b. 스페이드·하트에 5장짜리 무늬가 없으면, 다이아몬드와 클럽 중 더 긴 쪽(카드가 더 많은 쪽)을 1레벨로 입찰한다. 같으면 더 높은 순위의 무늬를 입찰한다.
  10. hcp가 17 이상이면, 가장 긴 무늬를 1레벨로 입찰한다. 동점이면 가장 낮은 순위의 무늬를 입찰한다("리버스").
  11. 위의 어느 규칙도 적용되지 않으면 Pass를 입찰한다.

위 예시 패에서는 규칙 9a가 적용되어 1 Hearts를 입찰해야 한다.

입력

입력은 여러 개의 케이스로 이루어진다. 각 케이스는 한 줄에 하나의 브리지 패를 나타내며, 13장의 카드가 공백 하나로 구분된다. 각 카드는 두 글자 문자열로, 첫 글자는 무늬(S, H, D, C), 둘째 글자는 숫자(A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2)이다. 입력은 파일 끝(EOF)에서 종료된다.

출력

각 패에 대해 Hand #k: 입찰 형식으로 한 줄씩 출력한다. 여기서 k는 1부터 시작하는 패 번호이다. 입찰은 Pass이거나, 레벨 다음에 공백 하나와 무늬 이름(No Trump, Spades, Hearts, Diamonds, Clubs)이 오는 형태이다.