加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式计算直接扑克牌?

发布时间:2020-12-14 06:32:17 所属栏目:百科 来源:网络整理
导读:有计算直接扑克牌的正则表达式吗? 我正在使用字符串来表示已排序的卡片,例如: AAAAK#sssss = 4 aces and a king,all of spades.A2345#ddddd = straight flush,all of diamonds. 在Java中,我正在使用这些正则表达式: regexPair = Pattern.compile(".*(w)
有计算直接扑克牌的正则表达式吗?

我正在使用字符串来表示已排序的卡片,例如:

AAAAK#sssss = 4 aces and a king,all of spades.
A2345#ddddd = straight flush,all of diamonds.

在Java中,我正在使用这些正则表达式:

regexPair = Pattern.compile(".*(w)1.*#.*");
regexTwoPair = Pattern.compile(".*(w)1.*(w)2.*#.*");
regexThree = Pattern.compile(".*(w)11.*#.*");
regexFour = Pattern.compile(".*(w)1{3}.*#.*");
regexFullHouse = Pattern.compile("((w)22(w)3|(w)4(w)55)#.*");
regexFlush = Pattern.compile(".*#(w)1{4}");

如何使用正则表达式计算直线(序列)值?

编辑

我打开另一个问题来解决同样的问题,但使用char的ascii值,
正则表达式是短的.细节here.

谢谢!

我不得不承认正则表达式不是我想要做的第一个工具.我几乎可以保证任何能够对未排序的手执行此操作的RE将比等效的过程代码更可怕且更不易读.

假设这些卡按面值排序(并且它们似乎是你所列出的正则表达式也不起作用),并且你必须使用正则表达式,你可以使用像

2345A|23456|34567|...|9TJQK|TJQKA

检测手的面值部分.

事实上,从我收集的here“标准”指针中,应按优先级递减的顺序检查以下内容:

Royal/straight flush: "(2345A|23456|34567|...|9TJQK|TJQKA)#(w)1{4}"
Four of a kind:       ".*(w)1{3}.*#.*"
Full house:           "((w)22(w)3|(w)4(w)55)#.*"
Flush:                ".*#(w)1{4}"
Straight:             "(2345A|23456|34567|...|9TJQK|TJQKA)#.*"
Three of a kind:      ".*(w)11.*#.*"
Two pair:             ".*(w)1.*(w)2.*#.*"
One pair:             ".*(w)1.*#.*"
High card:            (none)

基本上,那些与你的相同,除了我添加了皇家/同花顺和直线.如果你按顺序检查它们,你应该从手上获得最好的分数.这张高牌没有正则表达式,因为在那一点上,这是你唯一的得分.

我还将钢轮(环绕式)直线从A2345改为2345A,因为它们将按此方式进行分类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读