여기에서 새로운 형태의 코드 골프를 시도하고 싶습니다. 보너스와 마찬가지로 도전 과제의 모든 부분을 완료해야하는 것은 아니지만 각 답변은 특정 크기의 하위 집합을 구현해야합니다 (모든 답변을 구현해야하는 핵심 사항이 있음). 따라서 골프 외에도이 과제는 잘 어울리는 기능을 선택하는 것과 관련이 있습니다.
규칙
Kingdom Builder 는 보드 게임으로 (뾰족한) 육각 격자에서 재생됩니다. 보드는 4 개의 (무작위 화) 사분면으로 구성되며 각 사분면에는 10x10 개의 육각 셀이 있습니다 (따라서 전체 보드는 20x20입니다). 이 도전의 목적으로, 각 육각 셀에는 물 ( W
), 산 ( M
), 마을 ( T
), 성 ( C
) 또는 비어 있음 ( .
)이 있습니다. 사분면은
. . W . . . . . . .
. M W W . . . . . .
. M . . W . . . T .
M M . W . . . . . .
. . M . W W . . . .
. . . . . W W W W W
. T . . . . . . . .
. . W . . C . . . .
. . W W . . . . M .
. . . . . . . M M .
두 번째 행은 항상 첫 번째 행에서 오른쪽으로 오프셋됩니다. 선수 1
로는 4
(우리는이 도전을 무시합니다 몇 가지 규칙에 따라) 빈 셀에 40 개 정착촌 각까지 배치 할 수 있습니다. 게임이 끝날 때 가능한 보드는 다음과 같습니다.
3 3 W . . . 4 . 4 . . 2 W . 4 . . 4 . 4
3 M W W . 1 1 . . 4 2 W . 3 C 4 4 . . 4
3 M 2 2 W 1 1 1 T 3 2 W 4 3 . 1 4 . 4 .
M M . W 2 2 . . . 2 2 W 3 . 1 1 1 . . .
. 4 M . W W 2 2 2 2 W W 3 . 1 4 . T . .
. . . . . W W W W W . 3 C 1 . . 2 2 2 2
. T 1 1 1 1 . . 2 . . 4 . . . 2 2 M M M
4 . W 4 . C 4 4 . . . . . . 2 M M M M M
. 4 W W . . . 4 M . . W . W . 2 2 2 M M
. . . . . . . M M . . W W . . . . 2 M .
. . . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 . 1
M 3 3 . . . . . . . . 4 . T 2 . 2 4 1 .
M M . C . 4 . 4 . . . . . 1 2 4 2 1 1 .
M . . 1 . 4 . . . . M M 1 2 . . 2 1 . .
. . . W 1 1 4 1 1 . . . 1 2 . . 2 W W W
. . 1 1 W 1 T . 1 1 1 1 T . . 2 W . 4 .
. 1 1 W . 3 3 . . . . . . . . 2 W 4 C 3
C 1 3 3 3 . 3 . 4 . 4 . 4 . . 2 W 1 1 M
4 3 3 4 . M 4 3 . . . . . . . 2 W . . .
. . . 4 . M M 3 . . 4 4 . 4 . 2 W W . .
사분면에 다음과 같이 레이블을 지정합니다.
1 2
3 4
당신의 임무는 그런 보드를 득점하는 것입니다. 항상 사용되는 하나의 핵심 점수와 8 개의 선택 점수 가 있으며 그 중 3 개 는 각 게임에 대해 선택됩니다. † 다음에서는 9 점을 모두 설명하고 위의 설정을 각 플레이어가 얻는 포인트 수의 예로 사용합니다.
† 실제 게임에는 10 점이 있지만 골프를 원하지 않는 사람은 2 명입니다.
핵심 점수. 플레이어는 옆에 정착지가있을 때 마다 3 점 을 얻 C
습니다. 점수 예 : 18, 0, 15, 12.
선택적 점수.
플레이어는 적어도 하나의 정착지가있는 각 수평 행에 대해 1 점 을 얻습니다 .
점수 예 : 14, 20, 12, 16.
각 플레이어마다 자신의 정착지가 가장 많은 가로줄을 찾으십시오 (동점 인 경우 선택). 플레이어는 해당 행의 각 정착지에 대해 2 점 을 얻습니다 .
점수 예 : 14 (행 16), 8 (행 4, 5 또는 6), 28 (행 11), 10 (행 1).
플레이어는 아터 옆에있는 각 정착지마다 1 점 을 얻습니다
W
.점수 예 : 13, 21, 10, 5.
선수는 ountain 옆에있는 각 정착지마다 1 점 을 얻습니다
M
.점수 예 : 4, 12, 8, 4.
각 사분면에서 각 플레이어의 합의를 세십시오. 사분면 당 가장 많은 합의를 가진 플레이어는 각각 12 점을 얻 습니다. 두 번째로 큰 합의를 가진 플레이어는 각각 6 점을 얻습니다 .
점수 예 : 18 (6 + 0 + 6 + 6), 36 (12 + 12 + 0 + 12), 12 (0 + 0 + 12 + 0), 18 (12 + 6 + 0 + 0).
각 플레이어마다 합의 수가 가장 적은 사분면을 결정하십시오. 플레이어는 해당 사분면에서 각 합의마다 3 점 을 얻습니다 .
점수 예 : 18 (사분면 2), 0 (사분면 3), 15 (사분면 1 또는 2), 27 (사분면 3).
플레이어는 연결된 각 정착 그룹에 대해 1 점 을 얻습니다 .
예시 점수 : 7, 5, 6, 29.
플레이어는 플레이어의 가장 큰 연결된 합의 그룹에서 2 개의 합의 마다 1 점 을 얻습니다 .
점수 예 : 4, 10, 8, 2.
도전
게임에서와 마찬가지로 당신이 선택합니다 3 (선택 사양) 점수, 그리고 핵심 점수와이 세 가지 점수에 따라 주어진 보드를 점수. 코드는 4 개의 점수 목록을 생성해야합니다. 선택에는 한 가지 제한이 있습니다. 점수를 3 개 그룹으로 그룹화했으며 각 그룹 중 하나를 구현해야합니다.
- 1과 2 중 하나를 구현하십시오 .
- 3, 4, 5 및 6 중 하나를 구현하십시오 .
- 7과 8 중 하나를 구현하십시오 .
STDIN, 명령 줄 인수, 프롬프트 또는 함수 매개 변수를 통해 입력을 받아 프로그램이나 함수를 작성할 수 있습니다. 결과를 반환하거나 STDOUT에 인쇄 할 수 있습니다.
입력에 편리한 1D 또는 2D 목록 / 문자열 형식을 선택할 수 있습니다. 전체 인접 정보가있는 그래프를 사용할 수 없습니다 . 영감이 필요한 경우 16 진 격자에 대한 유용한 정보가 있습니다.
출력은 또한 편리하고 명확한 목록 또는 문자열 형식 일 수 있습니다.
이것은 코드 골프이므로 가장 짧은 대답 (바이트)이 이깁니다.
추가 가정
당신은 가정 할 수 있습니다 ...
- ... 각 플레이어는 하나 이상의 합의를 가지며 각 플레이어의 합은 40 개를 넘지 않습니다.
- ... 각 사분면에는 하나의 도시와 두 개의 성 또는 두 개의 도시와 한 개의 성이 있습니다.
- 마을과 성이 멀리 떨어져있어 두 곳과 정착 할 수 없습니다.
테스트 사례
위의 보드를 계속 사용하면서 가능한 모든 점수 매기기 메커니즘에 대한 개별 점수는 다음과 같습니다.
Chosen Scores Total Player Scores
1 3 7 52 46 43 62
1 3 8 49 51 45 35
1 4 7 43 37 41 61
1 4 8 40 42 43 34
1 5 7 57 61 45 75
1 5 8 54 66 47 48
1 6 7 57 25 48 84
1 6 8 54 30 50 57
2 3 7 52 34 59 56
2 3 8 49 39 61 29
2 4 7 43 25 57 55
2 4 8 40 30 59 28
2 5 7 57 49 61 69
2 5 8 54 54 63 42
2 6 7 57 13 64 78
2 6 8 54 18 66 51