我正在设计一种程序,以尽可能高的得分来解决单人纸牌游戏。 游戏在以下得分系统上得分: 通用标签

来自卡组的卡每次被翻转一次,并且允许玩家无限次翻转卡组(但是,-20分扣除仍然适用)。

我找到了各种策略指南,例如《 Windows纸牌游戏的克朗代克策略指南》 ,但是这些指南适用于不知道桌牌的真实单人纸牌游戏。

我正在寻找一种算法来解决所谓的“面朝上”单人纸牌游戏,在此之前我已经知道了套牌。 编辑:从下面答案中给出的论文来看,该游戏似乎被称为“体贴纸牌”。

到目前为止,我的想法是:某种蛮力逼迫,尝试并得分所有可能的动作;一种简单的算法,可以单独查看每一列并尝试“可以”进行的最佳移动;最后是一种类似于寻路的算法,在该算法中,对每一步进行评分并找到最佳的“路径”。

蛮力逼迫的问题在于,它将无限长(字面意义),因为您可以无限次重复动作。使用简单的算法,我无法完成一些棘手的事情,例如重新排列两列以放置所有的红心和球棒(例如)以释放仅8个红心。据我所知,寻路将起作用,但是我却迷失了这种实现方式。

有帮助吗?

解决方案

您可能会发现以下论文很有帮助(看来这已经由研究团队完成了。)

实时搜索纸牌:

其他提示

我要尝试的第一件事是一个朴素的固定步骤超前算法,其中在每一步中,我都会分析所有可能的n步骤,然后选择导致最高总得分的方法。

在相同系列的伪随机数据包上使用不同的n值来进行测试,并查看通过增加分数如何(如果有的话)提高分数。

如果这能带来合理的成功,则下一步是将点分配给您在评估过程中可以使用的某些位置。(例如,可以减去'downcard'ace到桩顶的距离。)

下一步可能是自适应搜索,在该搜索中,您首先要预见固定数量的步骤,然后再进一步扩展移动树的有希望的叶子。(基本上是修剪)。

以此类推,有很多可以尝试的方法,听起来很有趣,所以请尽情享受。

但是,如果其他所有方法都失败,请组织一场编码比赛。:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top