Cảm hứng
Câu hỏi này được lấy cảm hứng từ các lá bài Throne Room và King Court từ trò chơi bài xây dựng bài nổi tiếng Dominion .
Là một phần của lượt chơi, một người chơi một chuỗi các hành động. Hai hành động cụ thể này khiến hành động được phát tiếp theo lặp lại hai hoặc ba lần *. Các hành động "chung chung" khác gây ra hiệu ứng trò chơi cụ thể, nhưng chúng tôi sẽ không quan tâm đến các chi tiết, chỉ cần gắn nhãn chúng bằng các chữ cái.
Trường hợp thú vị là khi một Phòng ngai vàng hoặc Tòa án của nhà vua ảnh hưởng đến một Phòng ngai vàng khác của Tòa án Vua, khiến cho hiệu ứng nhân đôi hoặc tăng gấp ba lần tự nó tăng gấp đôi hoặc gấp ba. Những chuỗi dài của Throne Rooms, King Court và nhiều hành động có thể gây nhầm lẫn ngay cả những người chơi Dominion có kinh nghiệm.
Mục tiêu của bạn là viết mã giải quyết chính xác các chuỗi này, sử dụng càng ít byte càng tốt. Tôi sẽ mô tả các yêu cầu của chương trình trước khi giải thích cách các chuỗi giải quyết trong các quy tắc Thống trị.
* Về mặt kỹ thuật, bạn chọn hành động bị ảnh hưởng như là một phần của việc giải quyết Throne Room hoặc King Court, nhưng quan điểm này rõ ràng hơn cho thử thách này.
Yêu cầu chương trình
Viết chương trình hoặc hàm được đặt tên . Nó sẽ nhận chuỗi hành động đã chơi (STDIN hoặc chức năng nhập) và xuất hoặc in chuỗi hành động kết quả từ hiệu ứng nhân đôi và nhân ba. Ít byte nhất sẽ thắng.
Đầu vào
Một chuỗi đại diện cho chuỗi các hành động được chơi. Hành động chung được thể hiện bằng chữ in hoa A
thông qua Z
. Phòng hành động nhân đôi đặc biệt được đại diện bởi nhân vật 2
, và Tòa án hành động tăng gấp ba lần bởi 3
,
Số lượng ký tự (hành động) sẽ nằm trong khoảng từ 1 đến 30. Bạn có thể có kết thúc đầu vào trong một dòng mới nếu bạn muốn.
Ví dụ đầu vào: WA23G3GA
Đầu ra
Một chuỗi các chữ in hoa A
để Z
. Đây phải là chuỗi các hành động chung dẫn đến việc giải quyết các hiệu ứng nhân đôi và nhân ba, theo thứ tự hơn là chúng xảy ra.
Bạn có thể có đầu ra kết thúc trong một dòng mới nếu bạn muốn. Không nên có thêm nhân vật khác.
Ví dụ đầu ra : WAGGGGGGAAA
.
Cách thức nhân đôi và nhân ba trong Dominion
Ở đây, tôi sẽ xem xét cách các chuỗi phòng Throne ( 2
và) Tòa án của nhà vua 3
hoạt động theo các quy tắc thống trị.
Sau khi bạn chơi a 2
, hành động tiếp theo được giải quyết xảy ra hai lần. Vì vậy, nếu bạn lần đầu tiên chơi 2
, sau đó A
, bạn sẽ A
xảy ra hai lần.
2A -> AA
Tương tự
A2BC -> ABBC
3DE -> DDDE
3N2BC3XY2 -> NNNBBCXXXY
Lưu ý trong ví dụ cuối cùng rằng trận chung kết 2
không có gì để nhân đôi, vì vậy nó không có hiệu lực.
Điều thú vị xảy ra khi hiệu ứng nhân đôi hoặc nhân ba tăng gấp đôi hoặc gấp ba. Ví dụ,
22AB -> AABB
Đầu tiên, bạn chơi 2
. Sau đó, bạn chơi một cái khác 2
, được nhân đôi so với trước 2
. Kết quả là hai hành động tiếp theo được nhân đôi. Đầu tiên, hai bản sao A
giải quyết. Sau đó, các bản sao B
giải quyết.
Lưu ý rằng A
không được tăng gấp bốn lần: sau bản sao đầu tiên của 2
hành vi trên bản đầu tiên A
, bản sao tiếp theo tác động lên hành động chưa được giải quyết tiếp theo, đó là B
. Không có B
, chúng ta sẽ có
22A -> AA
trong đó bản sao thứ hai 2
đang chờ hành động tiếp theo tăng gấp đôi, nhưng không có hành động nào xuất hiện.
Cuối cùng, hãy xem xét một ví dụ phức tạp.
223BCDE -> BBBCCCDDE
Như trước đây, lần thứ nhất 2
khiến lần thứ hai 2
được nhân đôi. Vì vậy, hai hành động tiếp theo sẽ được nhân đôi. Bản sao đầu tiên nhân 2
đôi hành động tiếp theo 3
, phải được giải quyết hoàn toàn trước khi giải quyết bản sao tiếp theo 2
. Bản sao đầu tiên của 3
bộ ba B
, và bản sao thứ ba C
. Bây giờ, bản sao thứ hai vẫn đang chờ đợi nhân 2
đôi hành động vẫn chưa được giải quyết tiếp theo, đó là D
. Sau này, không còn hiệu ứng nhân đôi hoặc nhân ba, và hành động cuối cùng E
chỉ đơn giản là xảy ra.
Các trường hợp thử nghiệm
Chúng được đưa ra như (input,output)
.
(FY, FY)
(A2BC, ABBC)
(3DE, DDDE)
(3N2BC3XY2, NNNBBCXXXY)
(WA23G3GA, WAGGGGGGAAA)
(32, )
(33RST, RRRSSSTTT)
(2A32B2CDEFG, AABBCCDDEEFG)
(A2A323AB2CD2D2E3ABC, AAAAAABBBCCDDDDEEAAABBBC)
(P22LL3Q2Q22T, PLLLLQQQQQTT)
(322322ABCDEFGHIJKLMN, AABBCCDDEEEFFGGHHIJKLMN)
1
các ngăn xếp để xử lý các hành động không nhân giống như các hành động nhân lên. Bạn có thể vui lòng giải thích thêm về cách bạn sắp xếp các ngăn xếp khác nhau? Cụ thể, \ làm gì để "đưa ngăn xếp rep lên đầu"?