죄수의 딜레마 운동 라운드 에서 두 명의 선수가 각각 협조 할지 결정 또는 결함 이 라운드. 라운드 점수는 다음과 같습니다.
- 플레이어 A와 B 선수 모두 협력 : 모두 1 포인트
- 플레이어 A와 플레이어 B 모두 결함 : 둘 다에 대해 2 점
- 플레이어 A가 협력하고 플레이어 B 결함 : 플레이어 A와 협력하기위한 3 점 및 0 점 플레이어 B를위한 이탈
그러나 전략에 대해 걱정할 필요는 없습니다. 프로그램은 단순히 게임의 점수를 표로 만들뿐입니다. (당신이 이미 죄수의 딜레마에 친숙한 경우, 여기의 "점"은 "감옥의 해"에 해당합니다.)
당신의 도전은 여러 라운드에서 플레이어의 선택을 나타내는 입력을 취하고 각각의 총 점수를 계산하는 것입니다. 한 선수 소문자을 제출 선택, c
및 d
(대한 협력 및 결함 ), 대문자의 다른을 제출 선택, C
및D
. 이러한 선택은 프로그램에 문자열로 제공됩니다.
일반적으로 죄수의 딜레마에있는 플레이어는 자신의 움직임을 동시에 반복적으로 제출합니다. 그러나이 도전에서 플레이어는 한 번에 여러 라운드에 대한 선택을 제출했을 수 있습니다. 플레이어의 움직임이 순서에 맞지 않으면, 스코어링 프로그램은이를 기억하고 상대 플레이어의 다음 가능한 움직임과 일치시킵니다.
샘플 입력 문자열은 다음과 같습니다.
cDCddDDCcCc
이 입력에 존재하는 일치 항목을 표시하기 위해 소문자와 대문자를 개별적으로 호출하고 쌍을 이루겠습니다.
cDCddDDCcCc
c dd c c => cddcc
DC DDC C => DCDDCC
이들은 라운드로 쌍을 이룰 것입니다 :
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
d vs C (0 pts for lowercase-player, 3 pts for uppercase-player)
d vs D (2 pts for both)
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
c vs C (1 pt for both)
점수 9
(소문자) ~ 6
(대문자)를 생성하므로 출력은 9,6
(또는 명확한 구분 기호) 이어야합니다 .
또 다른 방식으로 표현하기 위해 다음은 각 행을 자체 행으로 가져옵니다.
cDCddDDCcCc
cD
Cd
dD
D c
C c
C
대문자 플레이어가 소문자 플레이어보다 더 많은 움직임을 제출했기 때문에 일치하지 않는 것이 하나 있습니다 . 이는 허용되며 점수를 매기기 위해 완전히 무시됩니다.
요구 사항은 다음과 같습니다.
/[cdCD]+/
일부 입력 메커니즘 (STDIN, 함수 인수, 파일에서 읽기 등)을 통해 정규 표현식 형식의 문자열을 허용하는 프로그램 또는 함수를 작성해야합니다 . (귀하의 프로그램은 선택적으로 후행 줄 바꿈으로 입력을 받아 들일 수 있습니다.)프로그램이나 함수는 플레이어의 점수를 문자열로 출력하거나 반환해야합니다. 출력 형식은 소문자 플레이어의 점수로 시작한 다음 대문자 플레이어의 점수로 시작해야하며 비어 있지 않은 숫자가 아닌 구분 기호로 구분됩니다. 후행 줄 바꿈은 선택 사항입니다.
한 선수가 다른 선수보다 더 많은 움직임을 가지면 초과 움직임은 무시됩니다.
입력의 모든 움직임이 독점적으로 한 명의 플레이어에서 온 경우 (즉, 라운드가 전혀 재생되지 않은 경우) 각 플레이어의 점수는
0
입니다.바이트 단위의 가장 작은 제출물이 이깁니다.
테스트 사례
Input: cDCddDDCcCc
Output: 9,6 -- or any delimiter; I chose commas here
Input: cccDDD
Output: 9,0
Input: DDDDDDccc
Output: 9,0
Input: cDcDcD
Output: 9,0
Input: dcDDC
Output: 5,2
Input: CcdCDDcd
Output: 6,6
Input: Ddd
Output: 2,2
Input: ccccccccccc
Output: 0,0
(0,0)
또는 [0,0]
출력 OK?