我已经成功地创建了一种算法来检查扑克牌的等级。它的正确率达到了100%,但速度很慢。我一直在分析代码,发现检查顺子函数是其中最慢的部分之一。
所以我的问题是,有没有更好的方法来计算手牌是否可以组成顺子?
以下是一些细节:
7张牌,2张由玩家持有,5张从桌面抽取。A可以是高牌或低牌。
每张牌都被赋予一个值: 2 = 2 3 = 3 .. 9 = 9 T = 10 J = 11 Q = 12 K = 13 A = 14
脚本有一个包含所有7张牌的数组:
现在我需要将其排序到一个数组中,其中:
对于上述问题,我使用了:
所以我的问题是,有没有更好的方法来计算手牌是否可以组成顺子?
以下是一些细节:
7张牌,2张由玩家持有,5张从桌面抽取。A可以是高牌或低牌。
每张牌都被赋予一个值: 2 = 2 3 = 3 .. 9 = 9 T = 10 J = 11 Q = 12 K = 13 A = 14
脚本有一个包含所有7张牌的数组:
$cards = array(12,5,6,7,4,11,3);
现在我需要将其排序到一个数组中,其中:
- 丢弃重复项
- 将卡片从低到高排序
- 仅返回5个连续的卡片,即(3,4,5,6,7)
对于上述问题,我使用了:
- 丢弃重复项(使用array_unique)
- 将卡片从低到高排序(使用sort())
- 仅返回5个连续的卡片(使用for循环来检查卡片的值)
array_unique()
内部对数组进行了排序,然后按原始未排序的顺序返回值。2. 然后你重新对数组进行排序。我建议使用 @Philipp 的答案,因为它只涉及一次排序操作,并完全不需要使用array_unique()
。 - Sammitch