作弊是一种纸牌游戏,您想摆脱它。转弯大致如下所示:
- 确定您该回合必须打的卡等级。在大多数变体中,这比上一回合高一等级。
- 面朝下播放1-4张牌。这些不必匹配有效等级。如果他们不这样做,就被视为作弊。此时,任何玩家都可以挑战您。
- 如果没有人挑战您,则继续玩下一位玩家。
- 如果有人挑战您并且您没有作弊,那么他们必须拿走所有已玩过的纸牌。
- 如果有人挑战您并且您作弊,则您必须拿走所有已玩过的纸牌。
该策略主要是虚张声势和纸牌计数的组合。不过我数学不好,所以我要欺骗作弊者并带一个机器人。
输入值
输入将采用您想要的任何顺序或格式:
- 玩家的手。如果我知道他们必须有卡(例如,我看过他们捡起它们),则这些卡将以升序排列。任何未知内容将在之后列为
?
。例如,如果他们有6张牌,并且我知道2张为1,一张为4张,则该手的有效表示为114???
。?总是会在已知卡之后列出。141???
并且11???4
都是无效输入,您的代码不需要处理它们。 - 我绝对不知道这些卡不是他们手的一部分(我有它们,我看到有人捡起它们,等等)。该列表将按升序排列。该列表可能为空。
- 玩家声称玩的纸牌。如果他们声称玩3 7,则可能输入
777
。卡将始终处于同一等级。
所打牌的数量将始终为1-4,等级始终为0-9。等级在他们手中不会出现超过四次,而不会出现在手中。
这是一个有效输入示例:
33577??
01555688
55
这是一个无效输入示例:
35377?? # Out of order
7779 # Five 7's in total
23 # Two separate ranks played
输出量
如果我们一定要挑战的话,这是一个真实的价值。如果我们不想挑战,则为假值。
如果我们知道他们被骗了,我们就会一直挑战。我们知道,如果他们打出不可能的牌,他们就会作弊:
12
3 # They don't have any 3's or ?'s
-------------
12?
33 # Fewer ?'s than played cards
-------------
123?
333
33 # Since we have three 3's they can't have two
我们要挑战的另一时间是他们是否打出最后一张牌。即使该游戏合法,它也会结束游戏,所以我们不妨挑战它。
1
1 # They'd win, so challenge anyway
更多测试案例
真(应该挑战)
11445678?
22
-------------
????????
4
4444
-------------
12345678
9
虚假(不应挑战)
1?
222
2
-------------
12?
22
22
-------------
?????
1111
计分
最短的代码获胜。
7
这是bullsh * t :)
—
jacksonecac
有多少人在玩?
—
jacksonecac
@jacksonecac您只看一场比赛,因此您不必担心有多少名球员。
—
Hovercouch16年
这应该是山丘之王的挑战
—
Vlo
在第二个假案中,您不应该挑战吗?
—
StephenTG '16