Каков оптимальный алгоритм для игры 2048?


Я недавно наткнулся на игру 2048. Вы объединяете похожие плитки, перемещая их в любом из четырех направлений, чтобы сделать "большие" плитки. После каждого хода новая плитка появляется в случайном пустом положении со значением либо 2 или 4. Игра заканчивается, когда все поля заполнены и нет ходов, которые могут объединить плитки, или вы создаете плитку со значением 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
}

то, что я делаю в любой момент, я постараюсь объединить плитки со значениями 2 и 4, то есть, я стараюсь есть 2 и 4 плитки, как можно меньше. Если я попытаюсь сделать это таким образом, все остальные плитки автоматически объединяются, и стратегия кажется хорошей.

но, когда я на самом деле использую этот алгоритм, я получаю только около 4000 очков перед игрой прекращает. Максимальное количество очков AFAIK составляет чуть более 20 000 очков, что намного больше, чем мой текущий счет. Есть ли лучший алгоритм, чем выше?

14 1777

14 ответов: