네덜란드어로 'Oorlog'( 'War'로 번역)라는 이름으로 개인적으로 알고있는 카드 게임의 측면에 대한 시뮬레이션을 작성해 보겠습니다.
'Oorlog'는 어떻게 작동합니까?
2 개의 카드 덱 (각각 2 개의 조커 포함)은 플레이하는 플레이어 수에 따라 동일하게 나누어집니다. 각 플레이어는 자신의 주식을 섞고, 거꾸로 뒤집어 놓으며, 모든 플레이어는 주식의 첫 카드를 동시에 엽니 다.
그 '전투'의 승자는 다음 규칙에 따라 카드의 가치에 의해 결정됩니다. 조커 / 에이스가 패배합니다. 왕은 여왕을 물리 친다. 여왕은 잭을 물리 친다. 잭은 10을 패배시킨다; 10 패 9 .... 또한 2와 3 모두 Ace / Joker를 물리칩니다. 마지막 규칙은 2 또는 3이 Ace 또는 Joker를 이길 수 있으며, Ace 또는 Joker는 다른 카드를 이길 수 있으며, 다른 카드는 2 또는 3을 이깁니다.이 경우 2 또는 3이 전투에서 이깁니다.
(이 카드 게임에는 어울리지 않습니다.)
둘 이상의 플레이어가 같은 카드를 가지면 '전쟁'이됩니다. 즉, 한 장의 카드를 거꾸로 놓은 다음 각각이 자신의 카드에서 새 카드를 열어 누가 가장 높은 카드를 가지고 있는지 확인합니다. 이것은 한 명의 플레이어가 전체 전투에서 승리 할 때까지 계속됩니다.
(그 전투의 모든 카드는 전투에서 승리 한 플레이어의 버림 더미로갑니다. 그런 다음 모든 사람이 새 카드를 엽니 다. 플레이어의 카드가 부족하면 버리는 카드 더미를 뒤집어 놓고이 새로운 스톡을 계속합니다. 이것은 플레이어가 자신의 카드를 모두 사용하지 못하고 카드가 가장 많은 플레이어가 이길 때까지 계속됩니다.)
세 명의 플레이어와 함께 '전투'예 :
- 4, 8, Jack :
Jack이 이깁니다. - 7, 에이스, 퀸 :
에이스 승. - 10, 10, King :
King이 이깁니다. - 3, Joker, 2 :
3 승. - 에이스, 조커, 2 :
2 승리. - 3, 퀸, 에이스 :
3 승. - Queen, Queen, 9 :
Queen & Queen은 '전쟁'을 겪고 있습니다. 4, 8;
8 승 - 4, 4, 4 :
모두 '전쟁'을 겪고 있으며, 3 장의 새로운 카드로 계속됩니다 : 8, Ace, 2;
2 승 - Jack, 5, Jack :
Jack & Jack은 '전쟁'을 겪고 있으며, 두 개의 새로운 카드로 계속됩니다 : 5, 5;
5와 5도 동일하므로 '전쟁'은 두 개의 새로운 카드로 다시 계속됩니다 : 10, King;
왕이 이긴다. - 조커, 조커, 에이스 :
모두 '전쟁'을 겪고 있으며, 3 장의 새로운 카드를 계속 사용합니다.
9와 9도 동일하므로 '전쟁'은 두 개의 새로운 카드로 계속됩니다 : Jack, 3;
잭이 이겼어
따라서 코드 도전에 :
입력:
배열이있는 STDIN 또는 배열을 시뮬레이션하는 문자열 (언어가 배열을 지원하더라도 호출). 이 배열에는 시간 순서대로 전투 카드가 들어 있습니다 (이에 대한 명확한 이해는 테스트 사례 참조).
산출:
STDOUT 전투에서이긴 플레이어의 색인.
인덱스가없는 (예 0
: 1
, 또는 2
) 또는 인덱스가없는 출력 (예 1
: 2
, 3
) 을 원하는지 선택할 수 있습니다 .
도전 규칙 :
- 입력은 배열을 나타내는 단일 배열 / 문자열입니다. 따라서 단순화하기 위해 배열 배열을 가질 수 없습니다. 또한 전쟁에 참여하지 않은 카드에 대한 대리 아이템을 가질 수 없습니다.
- 문자 표기법 대신 얼굴 카드에 숫자 표기법을 사용합니다. 에이스 / 조커 =
1
; 잭 =11
; 여왕 =12
; 그리고 왕 =13
. - 이 도전에서 우리는 항상 3 명의 플레이어 와 놀고 있다고 가정 할 수 있습니다 .
- 처음 3 개는 '전투'의 시작을 나타냅니다. 두 명 이상의 플레이어가 '전쟁'을했을 때, 계속 진행되는 카드는 전투를 나타냅니다 (이에 대한 명확한 이해는 테스트 사례 참조).
일반 규칙:
- 이것은 code-golf 태그가 붙어 있으므로 바이트 단위의 최단 답변이 이깁니다.
이것은 코드 골프가 아닌 언어가 입력되어서는 안된다는 의미는 아닙니다. '모든'프로그래밍 언어에 대해 가능한 짧은 코드 골프 응답을 생각해보십시오. - 출력에 사용한 색인 (0 또는 1 색인)을 언급하십시오.
테스트 사례 :
Test case 1: [4, 8, 11] -> 2 (or 3)
Test case 2: [7, 1, 12] -> 1 (or 2)
Test case 3: [10, 10, 13] -> 2 (or 3)
Test case 4: [3, 1, 2] -> 0 (or 1)
Test case 5: [1, 1, 2] -> 2 (or 3)
Test case 6: [3, 12, 1] -> 0 (or 1)
Test case 7: [12, 12, 9, 4, 8] -> 1 (or 2)
Test case 8: [4, 4, 4, 8, 1, 2] -> 2 (or 3)
Test case 9: [11, 5, 11, 5, 5, 10, 13] -> 2 (or 3)
Test case 10: [1, 1, 1, 9, 7, 9, 11, 3] -> 0 (or 1)
Test case 11: [13, 13, 4, 1, 3] -> 1 (or 2)
Test case 12: [13, 4, 13, 2, 3] -> 2 (or 3)