2048年游戏的最佳盲目算法是什么?

时间:2014-03-30 18:52:42

标签: algorithm artificial-intelligence

自2014年2月发布以来,游戏2048已大受欢迎。有关游戏的说明和最佳算法的讨论,请参阅What is the optimal algorithm for the game 2048?。这是source code

2048的盲算法是一个看不到电路板的算法;算法收到的唯一反馈是是否发生了尝试滑动(我们可能会认为滑动滑块会产生可听见的哔哔声)。盲目算法实际上对于2048年的入门非常有用,而无需给予游戏全神贯注的注意力。

这是我的具体问题:2048的盲目算法是否总是比10 ^ 6次试验中的平均得分3500更好? (仅发布您已经验证的答案)

这是LADDER算法的性能,可以标记为(LD * RD *)*(+ U)。也就是说,一个循环重复地向下,向下,向下,直到卡住,向右,向下重复,直到卡住"如果左上,右下都被阻挡,则向上按压,如果顶行完全为空且底行完全填满,则会发生这种情况。我把这个算法称为LADDER因为字母LDDR,因为我想象在像大金刚的马里奥那样爬下梯子。该算法的动机是保持从顶部到底部的梯度增加,类似于许多非盲算法。

这是一个直方图,用于最终板上由顶部瓷砖着色的LADDER的10 ^ 6次试验,箱宽为32,平均值为3478.1。我通过模拟Python中的游戏和算法来生成这些数据,使用概率.9,每个新图块都是2,就像在原始游戏中一样。您无法在此垂直比例下看到1024个游戏,但它们稀疏地分布在8000到16000之间。分形结构与顶部图块,第二个顶部图块的出现次数等有关。相比之下,随机按钮糖化在10 ^ 4次试验中平均约为800次。

enter image description here

1 个答案:

答案 0 :(得分:2)

2048年游戏中最重要的是将高数字集中在边界而不是中间。因此,一个非常好的策略是尽可能长时间地放置底部的所有内容。您的LADDER算法会这样做,但我想更多地集中在左侧而不是完全切换到右侧。这是伪代码中的算法:

while(true)
    {
    if (down)
        continue;
    elseif(left)
        continue;
    elseif (right)
        continue;
    else
        {
        up;
        down; //if forced to go up; go back down immediately
        }
    }

使用您的惯例,这将是:

((D*L)*R)U
言语:尽可能长时间下去;如果你不能;往左走;如果你不能离开;向右走。你很少需要上去。

因为我很快就没有时间实施它10次了;我希望其他人可以为此提供正确的统计数据,但我的猜测是它会胜过你的LADDER算法