该卡的游戏战争是在最后的结局是完全由甲板的初始配置决定的,只要一定的规则并遵守在卡片从比赛场地拿起并移动到甲板的顺序有趣。在这次挑战中,将只有2个玩家,大大简化了事情。
游戏
- 每位玩家将获得26张牌。
- 每个玩家将顶牌正面朝上放置在卡组中。拥有较高排名卡(
Ace > King > Queen > Jack > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2
)的玩家赢得回合,并将其卡放置在对手卡的顶部,将其翻转,然后将其添加到其牌组的底部(因此,他们的获胜牌位于牌组的底部) ,而另一位玩家的输家牌正好在其上方)。直到玩家之一的卡用完为止。- 如果这些牌的等级相同,则每个玩家将其牌组的前2张牌面朝上放置在其前一张牌的顶部(这样,位于牌组顶上的卡牌便是堆叠中的第二张牌,并且排名第二的卡片位于顶部)。然后,再次比较(每叠顶牌的排名),获胜者将其整个叠放在输家的整个叠层之上,将其上下颠倒,然后将其放在牌组的底部。如果还有其他平局,则以相同的方式玩更多的牌,直到选择获胜者或一个玩家的牌用完为止。
如果任一位玩家需要从其牌组中抽出一张牌,但其牌组为空,则他们立即输掉比赛。
挑战
给定玩家牌组中的两张纸牌列表,采用任何方便的格式,如果玩家1获胜,则输出真实值,如果玩家2获胜,则输出假值。
为方便起见,将用表示10张卡T
,并且将面部卡缩写(Ace -> A, King -> K, Queen -> Q, Jack -> J
),以便所有卡都长一个字符。或者,等级可以用十进制整数2-14(Jack -> 11, Queen -> 12, King -> 13, Ace -> 14
)或十六进制数字2-E(10 -> A, Jack -> B, Queen -> C, King -> D, Ace -> E
)表示。由于诉讼并不重要,因此不会提供诉讼信息。
- 您可能会假设所有游戏都将在某个时刻终止(尽管可能需要很长时间),并且一个玩家总是会先于另一张牌用尽卡牌。
- 每个玩家同时放置卡牌,一次放置一张卡牌,因此对于哪个玩家首先用完卡牌没有任何歧义。
测试用例
测试用例23456789ABCDE
用来表示等级(以升序排列)。
D58B35926B92C7C4C7E8D3DAA2, 8E47C38A2DEA43467EB9566B95 -> False
669D9D846D4B3BA52452C2EDEB, E747CA988CC76723935A3B8EA5 -> False
5744B95ECDC6D325B28A782A72, 68394D9DA96EBBA8533EE7C6C4 -> True
87DB6C7EBC6C8D722389923DC6, E28435DBEBEA543AA47956594A -> False
589EAB9DCD43E9EC264A5726A8, 48DC2577BD68AB9335263B7EC4 -> True
E3698D7C46A739AE5BE2C49286, BB54B7D78954ED526A83C3CDA2 -> True
32298B5E785DC394467D5C9CB2, 5ED6AAD93E873EA628B6A4BC47 -> True
B4AB985B34756C624C92DE5E97, 3EDD5BA2A68397C26CE837AD48 -> False
9A6D9A5457BB6ACBC5E8D7D4A9, 73E658CE2C3E289B837422D463 -> True
96E64D226BC8B7D6C5974BAE32, 58DC7A8C543E35978AEBA34D29 -> True
C2978A35E74D7652BA9762C458, 9A9BB332BE8C8DD44CE3DE66A5 -> False
BEDB44E947693CD284923CEA82, 8CC3B75756255A683A6AB9E7DD -> False
EEDDCCBBAA8877665544332299, EEDDCCBBAA9988776655443322 -> False
EEDDCCBBAA9988776655443322, DDCCBBAA9988776655443E3E22 -> True
参考实施
该参考实现是用Python 3编写的,并以与测试用例相同的格式输入输入(除了用换行符代替逗号和空格外)。
#!/usr/bin/env python3
from collections import deque
p1, p2 = [deque(s) for s in (input(),input())]
print(''.join(p1))
print(''.join(p2))
try:
while p1 and p2:
p1s = [p1.popleft()]
p2s = [p2.popleft()]
while p1s[-1] == p2s[-1]:
p1s.append(p1.popleft())
p2s.append(p2.popleft())
p1s.append(p1.popleft())
p2s.append(p2.popleft())
if p1s[-1] > p2s[-1]:
p1.extend(p2s+p1s)
else:
p2.extend(p1s+p2s)
except IndexError:
pass
finally:
print(len(p1) > 0)
1, 2, 3
游戏,因为您不断赢得对手的,所以游戏无止境1
。这是具有奇数张纸牌的怪癖吗?
1
?