Connect

Connect

어려움

지침

Hex / Polygon 게임의 결과를 계산해요.

Hex / Polygon / CON-TAC-TIX로 알려진 이 추상 보드게임은 규칙은 아주 단순하지만, 실제로 두면 복잡해요. 두 플레이어가 육각형 칸으로 이루어진 평행사변형 위에 돌을 놓아요. 자기 돌을 반대편 변까지 먼저 연결한 플레이어가 이겨요. 평행사변형의 네 변은 두 플레이어가 나눠 가져요. 즉, 한 플레이어는 한 변과 그 맞은편 변을 맡고, 다른 플레이어는 나머지 두 변을 맡아요.

목표는 보드를 간단하게 표현한 값을 받아 승자를 계산하는 프로그램을 만드는 거예요. 모든 게임이 "공정"할 필요는 없다는 점에 유의해요. (예를 들어 두 플레이어의 돌 개수가 다를 수도 있고, 보드의 가로와 세로 길이가 다를 수도 있어요.)

보드는 이렇게 생겼어요:

. O . X .
 . X X O .
  O O O X .
   . X O X O
    X O O O X

O 플레이어는 위에서 아래로, X 플레이어는 왼쪽에서 오른쪽으로 진행해요. 위 예시에서 O는 왼쪽에서 오른쪽으로 연결했지만, 위와 아래를 연결하지 못했기 때문에 아무도 이기지 못했어요.

트랙별 지침

어떤 테스트 케이스는 불공평해 보일 수도 있어요. 하지만 실제로 불공평한 경우도 있어요. 예를 들어, 어린 플레이어나 초보 플레이어에게 보드의 정해진 위치에 말 n개를 추가로 주는 일이 흔해서, 그 외에는 완전히 합법적인 게임에서도 말의 개수가 서로 맞지 않을 수 있어요.

어쨌든 이 연습 문제는 보드 길이나 추가 말처럼 다양한 매개변수를 가질 수 있는 게임에서 승자를 가리는 것만 중요하게 여겨요. 누가 어디로 언제 움직였는지, 또는 누구 차례인지 같은 게임의 다른 상태에는 관심이 없어요.

그러니 불공평해 보이는 게임들을 보고 의아해하지 마세요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Scala Exercism

Connect 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Scala 트랙을 연습 문제 95개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.