溪染的UNO牌
题号:NC214403
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有一天溪染,矢信和叁秋在玩UNO牌

UNO是一种牌类游戏,于1971年由Merle Robbins发明,现由游戏公司Mattel生产。游戏名来源于玩家需在出剩最后1张牌时喊出”UNO“,它是西班牙语和意大利语中“1”的意思。UNO流行于西方地区,受到全世界的欢迎。UNO的读音为“乌诺”或“优诺”。

UNO牌分三类牌:数字牌(76张)、功能牌(24张)、万能牌(8张),合计108张。

数字牌

数字牌(Number Card)由红、黄、蓝、绿4种颜色组成,每种颜色都有数字为0-9的牌。

功能牌

功能牌(Action Card)也由红、黄、蓝、绿4种颜色组成,牌的左上角印有图案。它们的名称分别为"跳过(Skip)"、"反转(Reverse)"、"+2(Draw Two)"。功能牌每种8张,每色2张,它们有着特殊的功能。

Skip:打出跳过后,你的下家不能出牌,轮到再下家出牌。

Reverse:打出反转后,当前出牌时针顺序将反转。

举个例子:设有A、B、C、D四个玩家,原出牌顺序为A→B→C→D→A,在打出此牌之后,顺序变为D→C→B→A→D。

+2:打出+2后,下家将被罚摸2张牌,并且不能出牌。

万能牌

万能牌(Wild Card)在UNO游戏中有很重要的地位。它们的牌面是黑色的,名称分别为变色(Wild)和+4(Wild Draw Four,Plus 4),每种各4张。

Wild:打出变色牌后,你可以随意指定下家出牌的颜色(4色中选1)。

+4:打出+4后,你可以随意指定下家出牌的颜色,同时下家需从牌堆中罚摸4张牌,且不能出牌。

游戏规则

UNO的获胜条件是:先将自己手上的牌全部打完(类似于斗地主) 。UNO可以让2-10名玩家一起玩,但最适宜人数当然是4人。UNO的节奏很快,一般1~4分钟就可以玩一局。

玩家们随意指定一个玩家作为庄家,随后每人取牌7张,其余作为牌库。庄家从牌堆中取出首张数字牌(若不是数字牌则再取),并依据此牌出牌,游戏开始。出牌的初始顺序是顺时针。

出牌规则(重要):必须和上一张打出的牌(参照牌)的颜色或图案相同(相同的数字或相同的功能牌),每次只可以出1张牌。

举一些例子:假设参照牌为”红3“,那你可以出:红色的所有牌(颜色相同),所有颜色的3(数字相同);假设参照牌为”黄+2“,那你可以出:黄色的所有牌(颜色相同),所以颜色的+2(图案相同)。当然,万能牌可以无视参照牌直接打出,并由你指定下一张牌的颜色。

若玩家无牌可出,要一直从牌堆抽一张牌直到可以出牌为止。

若有玩家出完了手中所有的牌,游戏结束。 将大家的牌重新洗混即可进行下一局。在游戏中,若牌出完但没人获胜,则将弃牌堆的牌,重洗出新的牌库继续玩。

溪染&叁秋&矢信的规定

为了简化游戏过程,溪染他(她)们决定取消万能牌

最开始的摸牌顺序为 溪染->叁秋->矢信

摸最开始的7张初始牌时,溪染先摸7张,然后叁秋再摸7张,最后矢信再摸7张

溪染最先出牌,最开始的出牌顺序为 溪染->叁秋->矢信(后来的出牌顺序会伴随功能牌的打出而改变)

为了简化游戏过程,溪染他(她)们决定取消庄家,游戏开始时的参照牌为绿色的1

溪染他们的卡牌不一定符合正常UNO牌的规格

当玩家打出牌后,应该将牌放在牌堆的最下面,即简化了以下规则

在游戏中,若牌出完但没人获胜,则将弃牌堆的牌,重洗出新的牌库继续玩。

有多张牌可以使用时,每次使用牌的时候都使用最靠左的能够使用的牌(新摸的牌放在右边)
打出的牌会立刻放在牌堆下方

特殊的,如果有玩家打出的最后一张牌为"Draw_Two"时,下家仍需要摸2张牌
若此时牌堆没有足够的牌,判定此情况为"There are no cards to take"

输入描述:

一个n,表示牌堆中一共有n张牌(n<=1000)

接下来n行,输入牌堆自上向下的牌

数字牌:
一行2个字符为 {颜色}{空格}{0-9}
绿色:g
黄色:y
红色:r
蓝色:b
举例:  g 1 代表**绿色的1**

功能牌:
一行2个字符串 {颜色}{空格}{功能牌种类}
"Skip" 跳过
"Reverse" 反转
"Draw_Two" +2
举例: g Skip 为绿色的跳过功能牌

输出描述:

当牌堆中没有牌可以取时,输出 ”There are no cards to take“  (不输出引号)
接下来3行输出3人当前的手牌,顺序为 溪染->叁秋->矢信 ,没有手牌输出空行
当有人胜利,第一行输出胜利者
溪染:xiran
叁秋:sanqiu
矢信:shixin
接下来3行依次输出3人的手牌,顺序为 溪染->叁秋->矢信 ,没有手牌输出空行
示例1

输入

复制
108
b 6
g 1
r Draw_Two
b 3
g 8
r Reverse
y 1
r 9
r 6
y 2
g 8
y 0
r Draw_Two
g 1
b Skip
g 6
y 1
g 7
b 1
b 3
g 8
g Skip
b 3
g 8
y 3
g 0
b 5
b Reverse
r 1
b 7
b 1
r Reverse
y 3
y 8
r 6
b Draw_Two
g 7
g Draw_Two
y Draw_Two
r Reverse
r 7
r 5
r Reverse
g 8
g 0
y 0
b Draw_Two
g 1
r 4
b 0
y 9
b 0
r 7
r Draw_Two
y 3
g Draw_Two
r 5
g 5
b 0
g 9
g Reverse
y 2
g 5
r 1
y 7
y 6
r 3
y 2
r 6
y 3
b 1
g 7
g Reverse
y 2
b 2
g 3
b Reverse
b 2
y 6
b 7
r 7
g Reverse
g 1
g 2
y 9
g 7
g 5
y 7
r 4
y 2
y Skip
b 4
b Draw_Two
g 0
y Reverse
y Reverse
r 7
r 8
y 4
y 3
b 6
b Reverse
b 1
r 6
g 1
r Reverse
r 7
y 8

输出

复制
sanqiu
r 5 r Reverse r 4 b 0 r 7 r Draw_Two g 5 b 0

b 5 b Reverse y 8 g Draw_Two r 5

说明

见题目描述中的附件
示例2

输入

复制
10
b 3
y 7
r Draw_Two
g 5
g 7
y Reverse
y 6
r 1
g Skip
b 3

输出

复制
There are no cards to take
b 3 y 7 r Draw_Two g 5 g 7 y Reverse y 6
r 1 g Skip b 3

说明

在发每人7张初始牌时牌就不够用(输出最后一行是空行)

备注:

对于50%的数据无功能牌
对于100%的数据无特殊约束,且出牌不超过1000回合