我喜欢这样的挑战,我希望尽快提交我的答案。
哪位玩家拥有最好的 7 张牌?
给定 9 张牌的无序列表(用空格分隔),找出哪个玩家的牌手最好。 这是扑克手排名列表。示例输入:
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
数组中的前 2 张牌代表玩家 1 的手牌,数组中的第二张牌代表玩家 2 的手牌。最后 5 张牌代表公共牌,双方玩家共用的牌。实际上,两位玩家都有 7 张牌,您必须确定哪位玩家拥有最好的 5 张牌。
一张牌被定义为一个字符串,第一个字符代表牌面值,第二个值代表花色。总是大写。没有卡片可以出现两次。
该函数将计算这手牌对任一玩家来说是平局还是获胜。它将在输入结束时输出总数。输出格式将在本文后面定义。
例子
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
Player 2 wins this hand. Player 1 has a pair of 2's, player 2 has a pair of kings.
5S 6S 8H 9D 7S 8S JH TS 2H
(ie: [[5S 6S] [8H 9D] [7S 8S JH TS 2H]])
Player 1 wins this hand Player 1 has a flush, player 2 has a straight.
2S 2H AC AS 2C AH 9H TS 2D
(ie: [[2S 2H] [AC AS] [2C AH 9H TS 2D]])
Player 1 wins this hand. Player 1 has quads, player 2 has a full house
5S 6S 2D 4D 9S AS KD JC 9D
(ie: [[5S 6S] [2D 4D] [9S AS KD JC 9D]])
A draw. Both players have Ace high.
更多信息
感谢 mgroves 提供以下指向具有类似问题的 Project Euler 的链接: http ://projecteuler.net/index.php?section=problems&id=54
测试数据
我们将使用 Project Euler 测试数据:
http://projecteuler.net/project/poker.txt
您的解决方案应该接受该文本文件作为输入,并输出总的赢和平局。
示例输出
输出必须采用以下格式:
1: 45
2: 32
D: 12
玩家 1 赢了 45 手,玩家 2 赢了 32 手,共有 12 局平局。(非实际结果)
规则
- 不必返回获胜的手型,如果有人赢了,只有谁赢了
- 卡片列表输入没有特定顺序
- 没有卡片在输入中出现两次
- 输入总是大写
- 将 Project Euler 测试数据作为输入
- 输出一个计数,在上面给定的格式中,哪个玩家赢得最多的手和总平局