Trong một vòng tập thể dục tiến thoái lưỡng nan của tù nhân , mỗi người chơi hai người quyết định nên hợp tác hay đào thoát cho vòng đó. Điểm cho một vòng là:
- Người chơi A và Người chơi B đều hợp tác: 1 điểm cho cả hai
- Cả người chơi A và người chơi B đều khiếm khuyết: 2 điểm cho cả hai
- Người chơi A hợp tác và người chơi B khiếm khuyết: 3 điểm khi hợp tác Người chơi A và 0 điểm cho người chơi B
Tuy nhiên, bạn không cần phải lo lắng về chiến lược: chương trình của bạn sẽ chỉ được lập bảng điểm cho một trò chơi. (Trong trường hợp bạn đã quen với tình trạng khó xử của tù nhân, "điểm" của tôi ở đây tương ứng với "năm tù.")
Thử thách của bạn là lấy đầu vào đại diện cho lựa chọn của người chơi qua nhiều vòng và tính tổng điểm tương ứng của họ. Một người chơi gửi các lựa chọn bằng chữ thường cvà d(cho sự hợp tác và khiếm khuyết ), và người chơi khác gửi các lựa chọn bằng chữ hoa Cvà D. Những lựa chọn này được cung cấp cho chương trình của bạn dưới dạng một chuỗi.
Thông thường, người chơi trong tình trạng tiến thoái lưỡng nan của tù nhân gửi di chuyển của họ đồng thời và lặp đi lặp lại. Tuy nhiên, trong thử thách này, người chơi có thể đã gửi lựa chọn của mình cho nhiều vòng cùng một lúc. Nếu di chuyển của người chơi không theo trình tự, chương trình tính điểm sẽ ghi nhớ và khớp với bước di chuyển có sẵn tiếp theo từ người chơi đối phương.
Đây là một chuỗi đầu vào mẫu:
cDCddDDCcCc
Để hiển thị các kết quả khớp tồn tại trong đầu vào này, tôi sẽ gọi riêng chữ thường và chữ hoa và ghép chúng lại:
cDCddDDCcCc
c dd c c => cddcc
DC DDC C => DCDDCC
Chúng sẽ được ghép thành các vòng:
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)
Cái nào tạo ra điểm số 9(chữ thường) thành 6(chữ hoa), vì vậy đầu ra phải là 9,6(hoặc bất kỳ dấu phân cách rõ ràng nào).
Để diễn đạt nó theo một cách khác, đây là mỗi cặp được kéo ra trên hàng riêng của nó:
cDCddDDCcCc
cD
Cd
dD
D c
C c
Có một điều chưa từng có C, bởi vì người chơi chữ hoa đã gửi nhiều di chuyển hơn người chơi chữ thường. Điều đó được chấp nhận, và nó hoàn toàn bị bỏ qua cho mục đích ghi bàn.
Dưới đây là các yêu cầu:
Bạn phải viết một chương trình hoặc hàm chấp nhận một chuỗi của biểu thức chính quy
/[cdCD]+/, thông qua một số cơ chế đầu vào (STDIN, đối số hàm, đọc từ tệp, v.v.). (Chương trình của bạn có thể tùy ý chấp nhận đầu vào với một dòng mới.)Chương trình hoặc chức năng của bạn phải xuất hoặc trả lại điểm của người chơi dưới dạng chuỗi. Định dạng đầu ra phải bắt đầu bằng điểm của người chơi chữ thường, tiếp theo là điểm của người chơi chữ hoa, được phân tách bằng bất kỳ dấu phân cách không trống, không số nào bạn chọn. (Một dòng mới là tùy chọn.)
Nếu một người chơi có nhiều di chuyển hơn người khác, các di chuyển thừa sẽ bị bỏ qua.
Nếu tất cả các chuyển động trong đầu vào là từ một người chơi duy nhất (nghĩa là không có vòng nào được chơi cả), thì điểm của mỗi người chơi là
0.Đệ trình nhỏ nhất tính bằng byte thắng.
Các trường hợp thử nghiệm
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)hay [0,0]OK cho đầu ra?
