#P2117. ACSL 2024-2025 Senior Division Contest #2 Uno Duo
ACSL 2024-2025 Senior Division Contest #2 Uno Duo
题目描述
Duo 卡牌游戏中,每张卡牌有 个特征:颜色、数字和符号。游戏开始时,有两张卡牌正面朝上,且玩家手中持有 张卡牌。在一轮游戏中,玩家可以从两张正面朝上的卡牌中选择一张,并尽可能多地将手中的卡牌与该牌堆上的卡牌进行匹配。如果两张卡牌恰好有两个特征相匹配,就可以将一张卡牌放在另一张卡牌的上面。

ACSL 版卡牌使用四种颜色(R = 红色,Y = 黄色,G = 绿色,B = 蓝色)、四个数字(1、2、3、4)和四种符号(X = 叉号,O = 圆形,S = 正方形,T = 三角形)。每张卡牌用一个包含 个字符的字符串表示,并按照颜色、数字、符号的顺序依次排列。例如,左侧所示的卡牌 R4S 是一张颜色为红色,数字为 4,符号为正方形的卡牌。有 张卡牌可能会被放在这张卡牌的上面:颜色为红色,数字为 1、2 或 3,符号为正方形的卡牌;颜色为黄色、绿色或蓝色,数字为 4 ,符号为正方形的卡牌;颜色为红色,数字为 4 ,符号为叉号、圆形或三角形的卡牌。


牌堆中可能还有 “万能” 卡牌,这种卡牌只具有 个特征中的其中 个特征,并以颜色(例如 G)、数字(例如 3)或符号(例如 S)这样的字符串表示。如果万能卡牌的这一特征与另一张卡牌的同一特征匹配,则无论其他两个特征是什么,这些卡牌都可以进行匹配。
你的程序将模拟单个玩家在多轮 Uno Duo 游戏中的操作。每一轮游戏开始时,有两张卡牌正面朝上,玩家手中持有 张卡牌(可将卡牌顺序视为从左至右排列),以及一个抽牌堆。
- 从手牌中找到最左侧一张与两张正面朝上卡牌中的其中一张相匹配的卡牌。将匹配的卡牌放置在那张正面朝上的卡牌上面,形成一个牌堆。如果该卡牌与两张正面朝上的卡牌都匹配,则放在第一张卡牌上面。
- 尝试将手中尽可能多的卡牌与该牌堆上的卡牌进行匹配。每次都从最左侧的卡牌开始查看。
- 如果牌堆最上面是一张万能卡牌,则将与之匹配的第一张卡牌放在它上面。
- 当手中没有卡牌或卡牌无法再继续匹配时,本轮游戏结束。
一轮游戏结束后,从抽牌堆中抽取尽可能多的纸牌,但手中持有的卡牌数不能超过 张。然后进行下一轮游戏,直到手中和抽牌堆中没有卡牌,或者没有卡牌可以再继续匹配。输出手中剩余卡牌的数量,后接每个牌堆最上面的卡牌。每张卡牌之间用一个空格隔开。
输入格式
将有三个字符串,分别是:两张正面朝上的卡牌;玩家手中持有的 张卡牌;抽牌堆中的卡牌。抽牌堆中最多有 张卡牌。每张卡牌之间用一个空格隔开。
输出格式
输出一个字符串,包含玩家手中剩余卡牌的数量、牌堆 1 最上面的卡牌以及牌堆 2 最上面的卡牌,每个卡牌之间用一个空格隔开。
输入输出样例
输入 #1
R4S B3O
R3X T B1T R1X B3X B1X Y4O
B4X Y3O B4T G2X B B3T
输出 #1
3 R4S B3T
输入 #2
G4T Y2S
B4O G4X B1O G4O R4O R1O 1
Y2T G3T Y4O G2T Y2O
输出 #2
1 Y2O G3T
输入 #3
R4T R3T
G2S R4X B3O Y3X G3S Y3S Y4X
B3T Y1T Y2T Y2O G2O B1T Y2S B2X B4X B2S Y1S R1O B1X B4S Y4S
输出 #3
1 Y4S B3O
输入 #4
G2X Y1X
Y2O Y4T G2T B2O B2T Y3O B3X
B1T B3O B1X G2S B1O G1X Y3S R3S Y1S B3S
输出 #4
6 B1O G1X
输入 #5
G4O B1T
4 B1O R4T B4T B3T B4X G1O
G2S Y3T S R4S Y4S R Y
输出 #5
3 G2S G1O
输入 #6
G2S B1T
Y1X Y3O G4T 1 G4O B4T Y2X
R4T S B1S B1O R2T B3T O G1O G3O R1O R1X
输出 #6
7 B1O Y2X
说明/提示
【样例解释】
样例 #1 解释: 游戏开始时,两张正面朝上的卡牌和玩家手中持有的 张卡牌如下所示:

手中可以匹配的第一张卡牌是 B3X(颜色和数字匹配,但符号不匹配),将其放在第二个正面朝上的卡牌上面,从而形成一个牌堆。在这一轮游戏中,后续所有匹配的卡牌都必须放在第二个牌堆上面。

接下来的卡牌匹配情况如下所示:

此时,玩家手中唯一剩下的卡牌是 Y4O。该卡牌无法放置在牌堆 2 上面,因此本轮游戏结束。玩家需要从抽牌堆中抽取 张卡牌补充手中的卡牌,此时玩家手中持有的卡牌为:Y4O B4X Y3O B4T G2X B B3T

在下一轮游戏中,选择牌堆 2 进行匹配,其顶部卡牌为 B4T。然后依次放置 B4X、B 和 B3T。由于抽牌堆中再无卡牌,因此游戏结束。

手中剩下 张无法再继续匹配的卡牌 (Y4O、Y3O 、G2X),且抽牌堆中再无卡牌。牌堆 1 最上面的卡牌是 R4S,牌堆 2 最上面的卡牌是 B3T。输出的字符串为:3 R4S B3T。