首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成/迭代所有"Connect-Four“游戏?

如何生成/迭代所有"Connect-Four“游戏?
EN

Stack Overflow用户
提问于 2017-02-08 02:28:15
回答 1查看 183关注 0票数 0

我需要迭代所有不同的"Connect-Four“游戏。

网格有42个单元格,其中有21个红色部分和21个黄色部分。

生成的每个游戏必须使用每个棋子,并且相同颜色的所有棋子是不可区分的(例如,如果您在一个解决方案中交换两个红色,则不能算作另一个解决方案)

从这点我可以得出结论

我正在考虑生成包含21个0和21个1的二进制字符串,但除了生成每个42个字符的二进制字符串并逐个测试它们之外,我不知道如何做到这一点。这将是42!(1.4050061e+51)字符串测试,所以这不是一个选项。

你将如何着手生成所有这些可能的游戏?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 04:17:52

看起来你并不关心这些游戏中的一些会提前结束。要简单地生成所有可能的组合,您应该将棋盘视为一个矩阵,其中1表示黑色,0表示红色。现在,如果我们向量化整个棋盘的值矩阵,那么我们将得到如下内容

代码语言:javascript
复制
[0,1,1,0,...] 

其中确切的顺序取决于排列。现在,由于每种颜色都有21种颜色,这意味着您实际上是在请求向量的所有可能的排列

代码语言:javascript
复制
[ones(1,21),zeros(1,21)]

(使用Matlab和Python表示法)。在Matlab中,您可以使用下面的函数生成所有排列的列表

代码语言:javascript
复制
perms([ones(1,21),zeros(1,21)])

我不确定您在这里想要什么,因为在实践中枚举所有这些显然是不可行的。如果您只对如何做到这一点感兴趣,我建议您查看Matlab实现。它看起来像10行非常简单的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42097287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档