gpt4 book ai didi

javascript - 在 Javascript (Node.js) 中分析这个数组的最有效方法?

转载 作者:搜寻专家 更新时间:2023-10-31 23:30:54 29 4
gpt4 key购买 nike

首先,我想指出这是服务器端 Node.js 代码,而不是普通的客户端 Javascript。我不想使用 jQuery,但可以使用任何 native Node.js 方法(如果您知道任何可能有用的方法)。

这是纸牌游戏中机器人玩家的代码。机器人有一手牌结构如下:

[ '9H', '10S', 'KD', '9D', '7D', 'QC', 'JC', '7C' ]

所以 8 张牌中的每一张都以 value+suit 字符串的形式给出。这无法更改,因为整个应用程序都使用此结构。

现在,机器人必须分析这手牌以搜索特定的牌组合。例如,它应该找到任何“第三个国王”(国王至少有 2 张相同花色的小牌)、“第二个十”(女王有至少 1 个相同花色的小牌)或“第三个皇后”。

在上面的例子中,它应该得出:第三个方 block K和第三个梅花皇后。

我正在考虑实现一种搜索算法来查找这些组合,但我担心它的效率会非常低。我的第一个想法是遍历数组以找到所有的 K、Q 和 10 并将这些数据保存在某处,然后再次遍历它以计算我们有多少张相同花色的其他牌。例如,对于国王:

var kingsuits = [];
for(var i=0;i<8;i++){
if(hand[i].substr(0,1) == "K")
kingsuits.push(hand[i].substr(-1));
}
//now kingsuits has the suits of all kings, and we can go through our hand again and check how many cards we have in each of these suits...

我的问题是,是否有更有效的方法来完成此任务?问题是,还有很多其他组合也应该寻找,而不仅仅是我在上面举出的例子。

此外 - 也许更重要的是 - 如果我们找到“第三位国王”,我们根本不需要寻找“第三位皇后”或“第二个 10”。这些组合具有清晰的层次结构,因此如果我们找到第一个组合,就根本不需要关心其他组合。

最佳答案

使用二维 HashMap 或数组或其他某种直接访问数据结构,其中存储了您手中是否有( bool 值)或多少张(整数)特定类型的牌。例如:

[ '9H', '10S', 'KD', '9D', '7D', 'QC', 'JC', '7C' ]
=>
| A K Q J 10 9 8 7 6 5 4 3 2
--+--------------------------------------
C | 0 0 1 1 0 0 0 1 0 0 0 0 0
D | 0 1 0 0 0 1 0 0 0 0 0 0 0
H | 0 0 0 0 0 1 0 0 0 0 0 0 0
S | 0 0 0 0 1 0 0 0 0 0 0 0 0

这应该允许在该结构中进行相当快速和简单的搜索 - 通过循环,您可以快速识别出有多个 9,并且梅花皇后旁边有 2 张梅花牌。

无论您是为黑桃选择一个对象还是一个数组,以及哪个(花色或值)是第一维还是第二维都无关紧要。对于值,您将需要使用数组来获得定义的顺序,即使映射(例如 A->0、K->1、... 2->12)是非常规的。

关于javascript - 在 Javascript (Node.js) 中分析这个数组的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249959/

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