Rod正在主持两个玩家George和Tim之间的纸牌游戏。目前,蒂姆正在洗牌。Rod怀疑Tim可能在作弊,因此他需要您的帮助来检查改组是否公平。
蒂姆(Tim)正在进行过度的洗牌:他从牌组的底部切出一堆纸牌,然后从牌堆的顶部切至卡牌的顶部,切开各个部分,然后重复该过程几次。
Rod眼神敏锐,可以确切地看到Tim每次切出多少张牌,但是他无法计算和跟踪Tim洗牌的速度。这就是您要进入的地方:Rod希望您编写一个程序或函数来获取详细的改组信息,并确定改组是公平的,微弱的还是技巧性的。
- 如果改组后,少于25对相邻纸牌保持相邻(以相同顺序),则改组是公平的,游戏可以继续进行。
- 如果至少有25对(但不是全部)对相邻纸牌保持相邻,则混洗很弱,Rod会在Tim的头上猛击,并要求他再混洗一些。
- 如果最后所有牌都保持在同一位置,那么蒂姆显然在作弊,罗德将用一条大鳟鱼击打他。
这是代码高尔夫球,所以最短的代码获胜。
输入:
在几行中,您将获得一系列介于0和52之间的数字(均为排他性数字),各行之间用空格隔开,其中每行代表一轮洗牌,其开始和结束时都是将所有牌堆在一起。
在每一行中,第一个数字是Tim从牌组底部切下的纸牌数,随后的每个数字是他从他的手掉到牌组顶部的纸牌数。如果一行中最后一个数字之后还剩下任何纸牌,则应假定Tim将其放在牌组的顶部。
输入保证有效。至少有一行数字,每行至少包含两个数字。每行上的第一个数字不少于同一行上所有其他数字的总和。尾随换行符是可选的,您可以假定输入有一个或没有输入。
输出:
如果随机播放正常,则程序应打印/返回“正常”;如果随机播放较弱,则打印/返回“弱”;如果Tim保持所有卡的顺序相同,则打印/返回“特技”。尾随换行符是可选的。
例:
假设套牌有52张牌,但是出于演示目的,我将使用10张牌的小套牌。
输入:
5 3 1
4 2 2
初始甲板,从顶部观察:0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
(5 6 7 8 9
手)
3
➜ 5 6 7 0 1 2 3 4
(8 9
手)
1
➜ 8 5 6 7 0 1 2 3 4
(9
手)
线➜的端9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
(1 2 3 4
手)
2
➜ 1 2 9 8 5 6 7 0
(3 4
手)
2
➜ 3 4 1 2 9 8 5 6 7 0
4对保持相邻:(3 4) (1 2) (5 6) (6 7)
测试用例:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
输出: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
输出: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
输出: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
输出: weak
26 13
26 13
26 13
26 13
输出: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
输出: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
输出: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
输出: fair
要求:
- 如果编写函数,则它可以从标准输入中读取或作为单个字符串参数接收输入。同样,该函数可以打印输出或返回输出。
- 该程序必须在Linux上使用免费软件运行。
- 源代码只能使用ASCII字符。
- 没有标准漏洞。