标签: 2048

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

我最近偶然发现了2048游戏.您可以通过在四个方向中的任意一个方向上移动它们来合并类似的图块,以制作"更大" 每次移动后,新的图块会出现在随机空位置,其值为24.当所有框都被填充并且没有可以合并图块的移动时,或者您创建值为的图块时,游戏会终止2048.

一,我需要遵循明确的战略来实现目标.所以,我想为它编写一个程序.

我目前的算法:

while (!game_over) {
    for each possible move:
        count_no_of_merges_for_2-tiles and 4-tiles
    choose the move with a large number of merges
}
Run Code Online (Sandbox Code Playgroud)

我做的是在任何时候,我会尝试合并与价值观的瓷砖24,就是我努力24瓷砖,尽可能最小.如果我这样尝试,所有其他瓷砖自动合并,策略似乎很好.

但是,当我实际使用这个算法时,我只能在游戏结束前获得大约4000点.AFAIK的最高分数略高于20,000分,远高于我目前的分数.有比上面更好的算法吗?

algorithm logic artificial-intelligence 2048

1893
推荐指数
13
解决办法
91万
查看次数

Python:证明NumPy数组的正当性

请我有点新鲜Python,它一直很好,我可以评论说python是非常性感的,直到我需要移动4x4矩阵的内容,我想用于构建游戏的2048游戏演示在这里我有这个功能

def cover_left(matrix):
        new=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
        for i in range(4):
             count=0
             for j in range(4):
                if mat[i][j]!=0:
                    new[i][count]=mat[i][j]
                    count+=1
        return new
Run Code Online (Sandbox Code Playgroud)

如果你像这样调用它,这就是这个函数的作用

cover_left([
              [1,0,2,0], 
              [3,0,4,0], 
              [5,0,6,0], 
              [0,7,0,8]
          ])
Run Code Online (Sandbox Code Playgroud)

它会覆盖左边的零并产生

[  [1, 2, 0, 0],
   [3, 4, 0, 0],
   [5, 6, 0, 0],
   [7, 8, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我需要有人帮助我numpy做一个这样做的方法,我相信会更快,需要更少的代码(我在深度优先搜索算法中使用),更重要的是实现cover_up,cover_down

`cover_left`.
`cover_up`
    [  [1, 7, 2, 8],
       [3, 0, 4, 0],
       [5, 0, 6, 0],
       [0, 0, 0, 0]]
`cover_down`
    [  [0, 0, 0, 0], …
Run Code Online (Sandbox Code Playgroud)

python search artificial-intelligence numpy 2048

9
推荐指数
1
解决办法
1157
查看次数