gpt4 book ai didi

PHP - 创建所有可能的扑克组合的扑克算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:07 27 4
gpt4 key购买 nike

我目前正在尝试制作一种扑克牌算法,用 2 张牌创建所有可能的扑克牌组合。我知道有 1,326 种起手牌组合。所以我像这样创建了我的起始套牌:

$startingDeck = array();
for($i=1; $i <= 13; $i++)
{
for($x=0; $x <= 3; $x++)
{
array_push($startingDeck, array("Value" => $i ,"Color" => $x, "key"=> $i.$x));
}
}

我现在想遍历所有卡片并获得所有可能的组合,例如 2 张卡片

: value 1 color 1 and value 1 color 2
: value 1 color 1 and value 1 color 3
... etc
: value 2 color 0 and value 1 color 1
: value 2 color 0 and value 1 color 2
... etc

我想对所有可能的组合执行此操作,但是如何。

最佳答案

您已经有了起始套牌。这个想法是生成所有排列:

例如

   CARD NUMBER
1 2 3 4 5 6 7 8 9 10 11 12 13 ... 52
1 o x x x x x x x x x x x x x
2 - o x x x x x x x x x x x x
3 - - o x x x x x x x x x x x
4 - - - o x x x x x x x x x x
5 - - - - o x x x x x x x x x
6
7 ......... and so on .........
8
9
10
11
12
13
...
52

我们在牌组中有 52 张牌(这是您在 $startingDeck 中生成的):

x 表示我们要生成的组合。请注意,我们不必生成矩阵的下半部分,因为在扑克中顺序并不重要,因为您会同时收到两张牌。我们也不会生成轴,因为您不能两次拥有同一张卡片(除非您作弊 :))。

现在的想法是使用两个循环,但是让第二个循环开始取决于第一个初始$j取决于$i。这样我们就不会生成例如2-1, 3-2, 3-1, ... 再次生成 1-2, 1-3, 2-3, ...

那么让我们开始吧

for ($i = 0; i < count($startingDeck); $i++) {
// Ignore e.g. 2-1, 3-2, as we already generated 1-2, 2-3, and so on...
for ($j = $i+1; $j < count($startingDeck); $j++) {
$firstCard = $startingDeck[$i];
$secondCard = $startingDeck[$j];
// print my stuff
}
}

这会生成顶层矩阵。 $i+1 确保我们不会生成对角线。

希望对您有所帮助。

关于PHP - 创建所有可能的扑克组合的扑克算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com