17 апреля в 07:46

Математика и игра 2048

сто тридцать одна тысяча
Впервые игру 2048 представили на Хабрахабр здесь. Не прошло и пяти дней, как раскрыли тайну простой стратегии ее прохождения. Она действительно проста — нужно строить змейку из тайлов (как на картинке).

Однако понятная цель не всегда означает её легкое достижение. Мы с Mrrl по очереди делились своими успехами: слепили блоки 8, 16, 32 и 65 тыс. Теперь же мне удалось то, что я и сам не ожидал — собрать максимально возможный тайл в игре — 131 072 или 217, скопив свыше 2 млн очков.

Это вдохновило меня доработать и оформить в виде поста начатые ранее размышления об игре 2048. Речь идет не о стратегии и тактике прохождения, а о таких вопросах, как:
— действительно ли 217 является максимально возможным блоком?
— какое количество очков можно в принципе набрать по пути к неизбежному концу игры?
— сколько ходов позволяет сделать головоломка?

Чтобы разобраться понадобится немного математики…

Максимально возможный тайл


Глядя на картинку со змейкой, ведущей к созданию блока 217, очевидно, что большего тайла при помощи именно этой стратегии собрать не удастся. Однако верен ли вывод, что 131 072 действительно максимум? Интуиция подсказываем нам ответ «да», но хотелось бы более убедительных аргументов. И эта часть исследования оказалась для меня наиболее сложной. Несколько подходов завели в тупик, пока, наконец, я не пришел к следующей конструкции.

Основная идея – абстрагироваться от того, как расположены тайлы на игровом поле, сосредоточив внимание только на их значениях. С этой точки зрения состояние игры можно описать упорядоченным по возрастанию набором 16 чисел, представленных в данный момент на экране (пустой клетке соответствует ноль).

В случае как на картинке состоянием будет набор (4, 4, 8, 16, …, 65536). А в самом начале игры оно может быть, например, вектором (0, 0, …, 0, 2, 2). Каждый ход (как человека, так и машины) приводит к новому состоянию, которое, однако, не может быть произвольным. Так, правила игры не позволяют перескочить разом с (0, …, 0, 2, 2, 8) до (0, …, 0, 4, 16).

Опишем все возможные переходы от одного состояния к другому:
- в ход человека – либо ничего не меняется, либо одна или несколько пар одинаковых чисел заменяются на сумму элементов в паре, затем добавляется необходимое количество нулей и вектор упорядочивается;
- в ход машины – либо в набор добавляется (так, чтобы не нарушить порядок) одна двойка или одна четвёрка, а один ноль убирается, либо (если нулей в состоянии нет) объявляется проигрыш игрока.
Исходным состоянием (то есть состоянием на момент начала головоломки) может быть (0, …, 0, 2, 2), (0, …, 0, 2, 4) или (0, …, 0, 4, 4). Человек и машина ходят по очереди, игрок начинает первым.

Эти правила можно рассматривать как аксиомы построенной нами модели игры 2048. Как и положено – она проще объекта моделирования, но обладает важными свойствами:
- если в исходной головоломке можно построить тайл, например, 217, то и в новой тоже можно;
- и наоборот, если в упрощенной игре нельзя перейти к состоянию с числом 218, то и в оригинальной создание такого блока невозможно.

Таким образом, для ответа на вопрос «точно ли 131 072 является максимально возможным тайлом?», остается доказать, что перейти в модели к состоянию с числом 218 никогда не удастся.

Доказательство: предположим противное и рассмотрим цепь состояний от одного из исходных до того, когда впервые появилось число 218. Исходя из аксиом модели, последний вектор мог появиться только после хода человека в ситуации вида (…, 217, 217).

Рассмотрим первое такое состояние, встречающееся нам в цепи. Ему предшествовало (опять же согласно принятым аксиомам) либо (…, 216, 216, 217), либо (…, 216, 216, 216, 216), причем очередь хода за человеком.

Это в свою очередь означает, что ранее игрок должен был оказаться в одной из ситуаций: (…, 215, 215, 216, 217), (…, 215, 215, 215, 215, 217), (…, 215, 215, 216, 216, 216), (…, 215, 215, 215, 215, 216, 216), (…, 215, 215, 215, 215, 215, 215, 216) или (…, 215, 215, 215, 215, 215, 215, 215, 215).

Замечание: некоторые состояния и переходы возможны только в рассматриваемой нами модели, им нет аналогов в игре 2048, что не влияет на ход доказательства.

Каждый следующий этап подобных рассуждений приводит к увеличению как минимум на единицу количества строго заданных компонент вектора, обязанного присутствовать в цепи. При этом наименьшее из фиксированных значений сокращается вдвое.

В результате, не более чем через 15 шагов все 16 компонент окажутся явно заданы. Тогда мы придем к утверждению, что в цепи должно быть состояние вида (2k, …), где k ≥ 3, причем ходит человек.

Однако игрок не мог оказаться в такой ситуации, так как после действия машины наименьшее из представленных в векторе чисел может быть только 0, 2 или 4. Пришли к противоречию, которое опровергает наше исходное предположение от противного, тем самым доказывая требуемое.

В итоге, 217 действительно является максимально возможным тайлом в игре 2048. Это означает также, что проходя головоломку можно сделать не более чем какое-то фиксированное количество ходов, набрав при этом ограниченное число очков. Интересно, сколько же именно баллов и действий в нашем распоряжении?

Максимально возможное число очков


Подсчет очков мне дался намного проще. Для начала наметим лучшее к чему может стремиться игрок в 2048. Заветная цель рекордсмена по очкам (и по количеству ходов, кстати, тоже) это ситуация, описываемая вектором (2, 8, 16, 32, ..., 131 072) или (4, 8, 16, 32, ..., 131 072). В этом случае игра заканчивается, в то время как любое другое состояние «доминируется» указанными, то есть его точно можно улучшить, выручив при этом дополнительные баллы (совершив дополнительные действия).

Отметим также, что на пути к желанному финалу, машина может выдавать большее или меньшее количество четвёрок. Чем чаще игрок получает такие «подарки», тем хуже будет его результат по очкам. Поэтому давайте считать, что машина во всех (за исключением оговоренных далее) случаях выдаёт двойку. Чтобы дойти до конца необходимо получить всего 15 четвёрок — для сбора блока 131 072, расположенного рядом с ним тайла 65 536, и так далее до 8.

Итак, запомним сделанное предположение и рассмотрим функцию f (n), значение которой определим как наименьшее возможное число очков, заработанное к моменту первого появления на поле тайла 2n. Почему именно наименьшее? Дело в том, что собрав впервые, например, блок 4, мы можем гарантировать наличие четырёх вырученных за это очков, но их может быть больше (если вдруг собралось параллельно несколько тайлов 4).

Получаем f (2) = 4. Далее:
f (3) = 16 (по 4 балла мы получим за каждый из двух необходимых блоков 4, затем ещё 8 — за их объединение в восьмёрку),
f (4) = 48 (= 16 + 16 + 16),
f (5) = 128 (= 48 + 48 + 32) и т. д.

Рекуррентное соотношение таково: f (n) = 2f (n — 1) + 2n для всех натуральных n, 3 ≤ n ≤ 16. Один из способов его разрешить — рассмотреть равенства f (n) = 2(2f (n — 2) + 2n — 1) + 2n = 4f (n — 2) + 2*2n, f (n) = 4(2f (n — 3) + 2n — 2) + 2*2n = 23f (n — 3) + 3*2n, ..., f (n) = 2n — 2f (2) + (n — 2)*2n. С учетом f (2) = 4, получаем f (n) = 2n(n — 1), что верно, напомним, для 3 ≤ n ≤ 16.

Собирая тайл 217 мы получим на 4 очка меньше, чем предсказывает выведенная формула, так как вынуждены будем использовать одну подаренную нам машиной четвёрку. То есть f (17) = 217*16 — 4 или 2 097 148.

Осталось только понять, что после создания максимального блока, нам вновь предстоит «впервые» собрать тайл 216, выручив за это f (16) — 4 очков (штраф опять же за использование дармовой четвёрки), затем 215, получив сопутствующие f (15) — 4 баллов, и так далее до 23 и f (3) — 4 поинтов в копилку.

Вычислив сумму f (17) + f (16) — 4 + f (15) — 4 +… + f (3) — 4, получим 3 932 100, что является максимально возможным количеством очков в игре 2048.

Небольшое замечание: по определению f (n) — это наименьшее возможное число очков, заработанное к моменту первого появления на поле тайла 2n. Однако в финале игры число заработанных баллов в точности равно сумме значений функций для n от 3 до 17 (за вычетом штрафа). Никаких излишков нет, так как они учтены в слагаемых, соответствующих более мелким блокам.

Максимально возможное количество ходов игрока


Задача про количество ходов казалась мне вначале самой сложной. Но рассуждения довольны просты: введем функцию g (n), в чём-то похожую на f. Её значение определим как минимальное число тайлов 2, необходимое для сбора блока 2n. В целях максимизации количества ходов мы также действуем в предположении, что машина каждый раз (за исключением 15-ти особо оговоренных случаев) выдаёт нам двойки.

Итак, g (2) = 2 (для сбора четвёрки нужно слить 2 двойки), g (3) = 4 (для сбора восьмёрки нужно слить две четвёрки, производство каждой из которых требует по 2 двойки), g (4) = 8 (= 4 + 4) и так далее. Простое рекуррентное соотношение g (n) = 2g (n — 1) даёт формулу g (n) = 2n — 1 для 3 ≤ n ≤ 16.

При создании блока 217 нам требуется на два тайла 2 меньше, чем указывает выражение выше, так как одну четвёрку нам дают сразу, собирать её не надо. Поэтому g (17) = 216 — 2 = 65 534. Точно также как и в случае с очками, для подсчёта общего числа двоек, задействованных на пути к одному из двух финальных состояний, следует сложить значения функции g (n) при n от 3 до 17 с учетом штрафов. Получим g (17) + g (16) — 2 +… + g (3) — 2, равное 131 038. Для полного порядка, к этому числу надо прибавить единицу, если мы пришли в финальное состояние (2, 8, 16, ..., 131 072).

Теперь вернемся к нашей задаче. Два тайла 2 нам даются с самого начала. Чтобы получить оставшиеся 131 036 (не считая последней в одном из финалов) необходимо совершить соответствующее количество действий (ведь каждый ход машина выдаёт нам ровно одну двойку). Плюс понадобится еще 15 четвёрок (также не считая последней в одном из финалов). И, наконец, еще одно действие приведёт к появлению последней двойки или четвёрки.

Итого, волей-неволей придётся сделать 131 036 + 15 + 1 = 131 052 нажатий на клавиши (или прикосновений к сенсорному экрану) — это и есть искомое максимальное количество ходов пользователя в игре 2048.

Анализ моих текущих достижений в игре 2048


В завершение позволю себе применить изложенные выше результаты и подходы для анализа моего недавнего успеха в игре 2048. Мне показалось удивительным и интересным то, что оказывается можно определить точное количество ходов, требуемое для достижения отраженной на картинке ситуации. Конечно, при этом не учитываются те действия, которые я совершал, неоднократно переигрывая отдельные эпизоды с последнего сохранения (сейвы можно делать, банально дублируя вкладки с игрой). А без этого собрать максимально возможный блок крайне маловероятно.

Итак, следуя опробованным ранее рассуждениям, если бы всю игру мне выпадали только двойки и одна четвёрка, то в результате g (16) + g (15) +… + g (2) + 1 — 2 = 65 533 ходов я должен был набрать целых f (16) + f (15) + f (14) +… + f (2) = 1 835 012 очков. Однако, как видно, заработано всего 1 811 320. Не хватает 23 692, то есть машина выдала мне 5 923 четвёрки, лишив возможности добрать очки, но сэкономив соответствующее число ходов.

Выводы:
— к настоящему моменту я сделал порядка 60 тыс. правильных действий на пути к полной победе в игре 2048;
— до одного из двух неизбежных финалов осталось еще около 71 тыс. нажатий на клавиши (при идеальной игре и везении);
— общее количество полученных мной очков (после сбора максимального тайла и четырёхтысячного блока рядом с ним) составляет 2 117 800, то есть ~54% от максимально возможного. Больше половины! Даже с учетом невосполнимых потерь в размере почти 24 тыс. баллов из-за генератора случайных чисел.

Если вдруг добью игрушку до конца — выложу картинку в этот пост. Всем хорошего настроения!

UPD:
финальная позицияПоявившаяся сразу после снимка экрана фраза Game over кажется мне в этом случае не совсем уместной. Ведь на пути к одному из двух возможных финальных состояний победный блок 2048 пришлось собрать 127 раз. Всего сделано 119 322 правильных хода. Машина выкинула на поле 11 730 четверок (не считая последней в левом верхнем углу), что ускорило победу, но лишило 46 920 очков.
+64
47616
160
LerTush 14,0

Комментарии (34)

0
T-D-K #
Точно также как и в случае с очками, для подсчёта общего числа двоек, задействованных на пути к одному из двух финальных состояний, следует сложить значения функции g (n) при n от 3 до 17 с учетом штрафов. Получим g (17) + g (16) — 2 +… + g (3) — 2, равное 131 038.

Ммм… я могу и ошибаться, буду рад если объясните где.
Имхо, не надо складывать g(n) (3<=n<=17). По-моему само g(n) и есть количество ходов, которое надо сделать чтобы собрать число 2^n.
0
LerTush #
По определению функции g (n) — это минимальное количество двоек (тайлов 2), необходимое для создания блока 2n.

Цель рассмотрения этой функции — узнать сколько тайлов 2 необходимо для того, чтобы достичь одного из двух финальных состояний: (2, 8, 16, 32, ..., 131 072) или (4, 8, 16, 32, ..., 131 072). Для этого надо просуммировать её значения для n = 17, 16, ..., 3 (со штрафом -2, обусловленным необходимостью появления как минимум 15 четвёрок). На базе этого уже можно вычислить искомое нами количество ходов.

Само по себе значение g (n) не равно количеству ходов, необходимому для получения блока 2n, хотя тесно с ним связано.
Простой пример: g (4) = 8, то есть для получения тайла 16 нужно 8 двоек. В то же время, чтобы объединить 8 двоек в блок 16 может потребоваться, например, 3, 7, 10 или не пойми ещё сколько ходов, в зависимости от того как расположены тайлы, какие действия совершаем мы и машина.

Всё переплетено между собой и вроде как одно и то же, но стоит немного отступиться от строгости и точности определений, как начинается сумятица. Я сам не сразу сориентировался и в конечном итоге выбрал такой способ формализации — через g. Мои попытки сразу ввести функцию, значение которой равно необходимому количеству ходов для построения 2n, успехом не увенчались. Просто непонятно, как дать её грамотное определение и вычислить все значения.

Если кто-нибудь решит задачу другим способом, будет здорово сравнить результаты!
+42
b01d #
Что бы немного разрядить обстановку, я просто оставлю это здесь: games.usvsth3m.com/2048/boobs-edition-21/
+2
dimitrimus #
ааа, они заполонили все поле, ну я не могу так играть!
0
Dm4k #
Самое страшное что, довольно быстро удалось запомнить появляющийся порядок, и продержаться какое-то время О_о
+7
a553 #
Нажатие на + или = (плюс или равно) на клавиатуре открывает всё. Обнаружено случайно.
0
M03G #
Арррр! Вся интрига пропала… Не успел открыть последнюю до Вашего комментария!
0
vladsharikov #
0
M03G #
Остановите меня кто-нибудь!
0
DankoUA #
Вы таки заставили меня попробовать эту игру)
+2
Lonsdaleite #
Думал, что крутой автор умудрился честно набрать 2^17, но ближе к концу статьи прочел про сейвы. Печаль, разочарование.
0
Monoroch #
Вы же понимаете что используя математически верную стратегию в игре где часть победы полностью зависит от случайности — побед сугубо результат количества попыток, сейвы только ускоряют этот процесс убирая случайность которая всё ломает.
+1
Lonsdaleite #
Я прекрасно все понимаю. И не говорю, что автор сделал что-то дурное. Но если воспринимать 2048 как игру (чем она и является) со своим набором правил, где элемент случайности — часть этих правил, то сэйвы — это чит. И я вначале, читая статью, решил, что автор просто играл и набрал максимум. Это было бы очень круто.
Просто с сэйвами добиться успеха — дело времени. А без них тяжело набрать даже 4096 (8192 я так и не смог, например).
0
Monoroch #
Без сейвов тоже дело времени, просто большего.
+1
LerTush #
Жаль, что вас одолевают столь негативные чувства. Постараюсь сгладить впечатление:

1. Я специально упомянул про сохранения, как раз чтобы развеять возможные заблуждения о «честном» прохождении. Дело в том, что никакой идеальной стратегии, которая бы стопроцентно позволила нивелировать фактор случайности в этой игре, по-видимому, не существует. Посудите сами — двойка появляется гораздо чаще четверки, но именно последняя непременно должна возникнуть в левом верхнем углу змейки на освободившейся (после создания блока 4 чуть правее) клетке. Что делать если нам не повезло? Честно переигрывать с самого начала?

По собственному опыту — понадобилось попыток 30 для получения этой желанную четвёрки в углу. При этом в посте вычислено количество ходов, сделанных для достижения представленного результата — порядка 60 тыс. без учета переигрываний. Даже из расчета 1 секунда на действие — это более 16 с половиной часов игры! На мой взгляд «честность» (всегда переигрывать с самого начала) в этом случае слишком явно граничит с безрассудством и делает попросту невозможным создание максимального тайла.

2. Даже с сохранениями всё не так просто. Дело в том, что продублировать вкладку можно только один раз. Чтобы снова засейвиться, надо сделать хотя бы один ход. Частенько он становится фатальным, прежде всего в острых ситуациях, когда змейка замыкается уже в верхнем ряду и никакого пространства для маневра ходами просто нет.

Попробуйте сами собрать какой-нибудь большой тайл. Уверен, вы испытали бы радость от своих достижений, даже если бы пришлось сохраняться.
+1
CaptainFlint #
По поводу п.2 — всё же не так всё плохо. Можно наплодить хоть сотню вкладок с текущим состоянием и делать один и тот же ход в каждой из них, пока не получится нужный результат. Единственное ограничение — после выполнения хода состояние в браузерном хранилище уже перезатёрто, и продублировать вкладку со старым состоянием не получится (т.е. с количеством вкладок надо определяться заранее, до выполнения хода).
0
LerTush #
Вот так да, век живи — век учись! Оказывается и правда можно было делать несколько дубликатов текущего состояния. Я почему-то был уверен, что только одно.
0
CaptainFlint #
А как же вы тогда добивались нужных комбинаций? Неужели 128K удалось набрать, имея на исправление неудачного хода не более одной попытки? о_О
+1
LerTush #
Удалось. Может именно поэтому мне слегка удивителен скептицизм некоторых участников обсуждения, считающих, что собрать максимальный тайл с сохранением ничего не стоит. Хотя это вовсе не предмет дискуссии.
+2
jakobz #
С другой стороны, возможность сохранения фактически идентична возможности выбрать 2 или 4 появится, и в каком месте. Так что то что вы анализировали и проходили — это что-то типа тетриса, где падают одни «палки».

Игра ведь как раз и интересна тем, что заставляет учитывать эти вероятности, и выпутываться из всяких хитрых положений. И там из-за этого гораздо хитрее стратегия, чем просто строить «змейку».
0
LerTush #
Слушайте, если бы я не проникся тактикой игры и умением выпутываться из всяких хитрых положений, думаю никакие сохранения мне не помогли бы. Это же было бы невыносимо скучно, только представьте!

Я, конечно же, получал удовольствие от игры, старался нащупать как по-максимуму нивелировать случайность — в этом суть головоломки, её интерес. Зачем же играть в тетрис с одними палками? Просто наряду с самой игрой мне показались увлекательными и другие вопросы, которым и посвящен пост. Он же никак не связан с достижением максимального тайла — это только вдохновило доработать и оформить родившиеся ранее (ещё на этапе сбора 16 тыс. блока) размышления.

Что касается механики игры, возможно даже, что я достаточно глубоко её понимаю и близок к идеальной тактике. Но у меня нет в этом уверенности и нет идей, как строго сформулировать и обосновать эту самую абсолютно правильную теорию игры. Это же совсем другой предмет исследования, который мне пока не под силу. В то же время просто вывалить на сообщество своё непродуманное до конца, бесструктурное мнение о том, как лучше проходить головоломку, нет никакого желания и, уверен, никому не нужно.
+11
norlin #
Заранее новая цель для автора.
+1
jakobz #
Интересно, до тепловой смерти вселенной это решить можно?
+2
LerTush #
Вы решили от меня избавиться надолго? :)
0
DankoUA #
Что ж, хороший анализ, но есть замечания. Все ваши выкладки можно значительно упростить (и сделать более строгими формально), если взять чуть другую модель. Кстати, ваша модель описана не совсем верно. Нужно добавить, что если в наборе есть хоть одна пара одинаковых чисел, то за ход игрока как минимум одна пара чисел сливается в сумму. Т.е. ничего не измениться за 1 ход не может (иначе нет смысла в подсчете максимума ходов).

Лучше взять такую модель:
Состояние то же — набор из 16 чисел. Но ходы мы определим по другому. У нас не будет человека и компьютера, а будет только 1 игрок, который играет так: если в наборе есть одинаковые числа (нули в счет не берем), то он должен выбрать ровно одну пару и слить их в сумму, если же одинаковых нет, то за один ход добавляем 2 или 4. Количество очков за ход — сумма складываемых чисел. В данной модели максимальный тайл, максимумы очков и ходов будут теми же, что и в вашей модели. Но она лучше и вот почему. В этой модели не будет «сложных» состояний. Любое состояние в процессе игры будет иметь либо ровно одну пару одинаковых, либо вообще не иметь одинаковых чисел. Например, в этой модели несложно видеть, что как только мы впервые получили число 2^k, k>2, в наборе, оно должно быть единственным числом в этом наборе. Так как состояния в этой модели проще, то рассуждения и выкладки можно записать проще и более формально.
0
norlin #
Ничего не измениться может в случае, если подвинули фишки в другом направлении (не в том, в котором пара чисел может сложиться).

Но «максимум ходов» всё равно имеет смысл, т.к. в случае хода игры в любом случае будут изменения – появление новой фишки.
0
DankoUA #
Да действительно, в модели автора сливать пары не обязательно. Но в любом случае такая модель сложнее для понимания, чем в модели, где пары нужно обязательно сливать если есть возможность.
0
LerTush #
Выбор модели — вопрос творческий. Главное, чтобы она позволяла решить поставленную задачу, а так — чем проще, тем лучше, полностью согласен!

Касательно вашего замечания — немного повторюсь с norlin. Даже если в наборе есть одна или несколько пар одинаковых чисел это не значит, что человек обязан хоть одну из них объединять в более крупный блок. В реальной игре такая ситуация не редкость. И что самое главное — это никоим образом не лишает смысла подсчет максимума ходов! Наоборот, только подчеркивает насколько это интересный результат! Ведь оказалось, что наибольшее возможное количество действий не зависит от выбранной пользователем стратегии (если при этом ему удалось добраться-таки до финала). Напротив, искомое число зависит только от ходов машины — сколько четвёрок она сгенерирует. Чем больше — тем быстрее всё закончится и тем меньше очков нам светит.

Предлагаемая вами модель, действительно, проще, но не ставит ли она новых, ещё более сложных вопросов? Например, обоснуйте кратко почему если в игре 2048 можно собрать тайл 2n, то и в условиях модели это обязательно удастся? Ведь её состояния никак не связаны с процессом игры — пользователь может собрать несколько блоков за один ход, в том числе и одинаковых, а в модели это невозможно.

Если у вас есть очевидное доказательство этого важного факта, то переход к новым конструкциям скорее всего оправдан. В ином случае нам нет смысла искать максимальный тайл в модели, так как в игре 2048 он может оказаться совершенно другим.

Спасибо за комментарий!
0
DankoUA #
Ваш вопрос правильный, но ответ не сложен =) Суть в том, что в вашей модели (которая, конечно, ближе к реальной игре) нет смысла откладывать слияние пар на потом (это может принести только вред). Формально верно такое утверждение (У1) — если в вашей модели можно достичь состояния, в котором нет одинаковых, то этого же состояния можно достичь и в упрощенной модели. Ясно, что если вы достигли тайла 2^n, то вы можете достигнуть его или больший тайл в состоянии, где нет одинаковых (просто слив все пары). Но по утверждению (У1), я могу достичь этого состояние в моей модели. Доказать (У1) не трудно, нужно просто использовать то, что операции слияния одинаковых и добавления новых чисел можно переставлять между собой.
0
LerTush #
Скорее всего утверждение (У1) действительно можно доказать, насколько просто и изящно — сходу оценить сложно. Правда оно даже в формулировке опирается не на исходную предметную область (игру 2048), а как раз на ту модель, которую вы считаете излишне трудной и от которой хотите уйти.

Думаю, что ваши идеи все-таки могут упростить и сделать более строгими выкладки, изложенные в посте, просто они требуют тщательного осмысления и адаптации.

В любом случае спасибо! Приятно, что кто-то углубился именно в теоретические аспекты исследования. Пределов совершенства нет и все здравые мысли обязательно пригодятся, не сейчас — так чуть позже.
0
Mrrl #
Открытый вопрос в этой игре (без сохранений): допустим, что компьютер целенаправленно играет против человека, и оба это знают. Получается детерминированная игра с полной информацией. Каким будет её результат при наилучшей игре обоих?
0
qw1 #
В такой постановке наличие сохранений ничего не меняет.
0
Mrrl #
Это верно. Если мы и подглядим, какой ход сделает компьютер в ответ на наш, мы сможем и просчитать это заранее.
0
DankoUA #
По изначальным правилам «2048» это очень трудный вопрос, чистой теорией вряд ли можно решить, а вот если разрешить игроку складывать любые одинаковые пары, то ответ понятен из статьи — комп должен выбрасывать 4ки и в самом конце одну 2ку.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.