正则表达式计算直接扑克牌?
发布时间: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值, 谢谢!
我不得不承认正则表达式不是我想要做的第一个工具.我几乎可以保证任何能够对未排序的手执行此操作的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,因为它们将按此方式进行分类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |