Comments 34
Точно также как и в случае с очками, для подсчёта общего числа двоек, задействованных на пути к одному из двух финальных состояний, следует сложить значения функции g (n) при n от 3 до 17 с учетом штрафов. Получим g (17) + g (16) — 2 +… + g (3) — 2, равное 131 038.
Ммм… я могу и ошибаться, буду рад если объясните где.
Имхо, не надо складывать g(n) (3<=n<=17). По-моему само g(n) и есть количество ходов, которое надо сделать чтобы собрать число 2^n.
По определению функции 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, успехом не увенчались. Просто непонятно, как дать её грамотное определение и вычислить все значения.
Если кто-нибудь решит задачу другим способом, будет здорово сравнить результаты!
Цель рассмотрения этой функции — узнать сколько тайлов 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, успехом не увенчались. Просто непонятно, как дать её грамотное определение и вычислить все значения.
Если кто-нибудь решит задачу другим способом, будет здорово сравнить результаты!
Что бы немного разрядить обстановку, я просто оставлю это здесь: games.usvsth3m.com/2048/boobs-edition-21/
ааа, они заполонили все поле, ну я не могу так играть!
Самое страшное что, довольно быстро удалось запомнить появляющийся порядок, и продержаться какое-то время О_о
Нажатие на + или = (плюс или равно) на клавиатуре открывает всё. Обнаружено случайно.
Арррр! Вся интрига пропала… Не успел открыть последнюю до Вашего комментария!
habrahabr.ru/post/219497/#comment_7502871
не велика сила воли-то :) => habrahabr.ru/post/219497/#comment_7502879
:)
не велика сила воли-то :) => habrahabr.ru/post/219497/#comment_7502879
:)
Остановите меня кто-нибудь!
UFO just landed and posted this here
Думал, что крутой автор умудрился честно набрать 2^17, но ближе к концу статьи прочел про сейвы. Печаль, разочарование.
Вы же понимаете что используя математически верную стратегию в игре где часть победы полностью зависит от случайности — побед сугубо результат количества попыток, сейвы только ускоряют этот процесс убирая случайность которая всё ломает.
Я прекрасно все понимаю. И не говорю, что автор сделал что-то дурное. Но если воспринимать 2048 как игру (чем она и является) со своим набором правил, где элемент случайности — часть этих правил, то сэйвы — это чит. И я вначале, читая статью, решил, что автор просто играл и набрал максимум. Это было бы очень круто.
Просто с сэйвами добиться успеха — дело времени. А без них тяжело набрать даже 4096 (8192 я так и не смог, например).
Просто с сэйвами добиться успеха — дело времени. А без них тяжело набрать даже 4096 (8192 я так и не смог, например).
Жаль, что вас одолевают столь негативные чувства. Постараюсь сгладить впечатление:
1. Я специально упомянул про сохранения, как раз чтобы развеять возможные заблуждения о «честном» прохождении. Дело в том, что никакой идеальной стратегии, которая бы стопроцентно позволила нивелировать фактор случайности в этой игре, по-видимому, не существует. Посудите сами — двойка появляется гораздо чаще четверки, но именно последняя непременно должна возникнуть в левом верхнем углу змейки на освободившейся (после создания блока 4 чуть правее) клетке. Что делать если нам не повезло? Честно переигрывать с самого начала?
По собственному опыту — понадобилось попыток 30 для получения этой желанную четвёрки в углу. При этом в посте вычислено количество ходов, сделанных для достижения представленного результата — порядка 60 тыс. без учета переигрываний. Даже из расчета 1 секунда на действие — это более 16 с половиной часов игры! На мой взгляд «честность» (всегда переигрывать с самого начала) в этом случае слишком явно граничит с безрассудством и делает попросту невозможным создание максимального тайла.
2. Даже с сохранениями всё не так просто. Дело в том, что продублировать вкладку можно только один раз. Чтобы снова засейвиться, надо сделать хотя бы один ход. Частенько он становится фатальным, прежде всего в острых ситуациях, когда змейка замыкается уже в верхнем ряду и никакого пространства для маневра ходами просто нет.
Попробуйте сами собрать какой-нибудь большой тайл. Уверен, вы испытали бы радость от своих достижений, даже если бы пришлось сохраняться.
1. Я специально упомянул про сохранения, как раз чтобы развеять возможные заблуждения о «честном» прохождении. Дело в том, что никакой идеальной стратегии, которая бы стопроцентно позволила нивелировать фактор случайности в этой игре, по-видимому, не существует. Посудите сами — двойка появляется гораздо чаще четверки, но именно последняя непременно должна возникнуть в левом верхнем углу змейки на освободившейся (после создания блока 4 чуть правее) клетке. Что делать если нам не повезло? Честно переигрывать с самого начала?
По собственному опыту — понадобилось попыток 30 для получения этой желанную четвёрки в углу. При этом в посте вычислено количество ходов, сделанных для достижения представленного результата — порядка 60 тыс. без учета переигрываний. Даже из расчета 1 секунда на действие — это более 16 с половиной часов игры! На мой взгляд «честность» (всегда переигрывать с самого начала) в этом случае слишком явно граничит с безрассудством и делает попросту невозможным создание максимального тайла.
2. Даже с сохранениями всё не так просто. Дело в том, что продублировать вкладку можно только один раз. Чтобы снова засейвиться, надо сделать хотя бы один ход. Частенько он становится фатальным, прежде всего в острых ситуациях, когда змейка замыкается уже в верхнем ряду и никакого пространства для маневра ходами просто нет.
Попробуйте сами собрать какой-нибудь большой тайл. Уверен, вы испытали бы радость от своих достижений, даже если бы пришлось сохраняться.
По поводу п.2 — всё же не так всё плохо. Можно наплодить хоть сотню вкладок с текущим состоянием и делать один и тот же ход в каждой из них, пока не получится нужный результат. Единственное ограничение — после выполнения хода состояние в браузерном хранилище уже перезатёрто, и продублировать вкладку со старым состоянием не получится (т.е. с количеством вкладок надо определяться заранее, до выполнения хода).
Вот так да, век живи — век учись! Оказывается и правда можно было делать несколько дубликатов текущего состояния. Я почему-то был уверен, что только одно.
А как же вы тогда добивались нужных комбинаций? Неужели 128K удалось набрать, имея на исправление неудачного хода не более одной попытки? о_О
С другой стороны, возможность сохранения фактически идентична возможности выбрать 2 или 4 появится, и в каком месте. Так что то что вы анализировали и проходили — это что-то типа тетриса, где падают одни «палки».
Игра ведь как раз и интересна тем, что заставляет учитывать эти вероятности, и выпутываться из всяких хитрых положений. И там из-за этого гораздо хитрее стратегия, чем просто строить «змейку».
Игра ведь как раз и интересна тем, что заставляет учитывать эти вероятности, и выпутываться из всяких хитрых положений. И там из-за этого гораздо хитрее стратегия, чем просто строить «змейку».
Слушайте, если бы я не проникся тактикой игры и умением выпутываться из всяких хитрых положений, думаю никакие сохранения мне не помогли бы. Это же было бы невыносимо скучно, только представьте!
Я, конечно же, получал удовольствие от игры, старался нащупать как по-максимуму нивелировать случайность — в этом суть головоломки, её интерес. Зачем же играть в тетрис с одними палками? Просто наряду с самой игрой мне показались увлекательными и другие вопросы, которым и посвящен пост. Он же никак не связан с достижением максимального тайла — это только вдохновило доработать и оформить родившиеся ранее (ещё на этапе сбора 16 тыс. блока) размышления.
Что касается механики игры, возможно даже, что я достаточно глубоко её понимаю и близок к идеальной тактике. Но у меня нет в этом уверенности и нет идей, как строго сформулировать и обосновать эту самую абсолютно правильную теорию игры. Это же совсем другой предмет исследования, который мне пока не под силу. В то же время просто вывалить на сообщество своё непродуманное до конца, бесструктурное мнение о том, как лучше проходить головоломку, нет никакого желания и, уверен, никому не нужно.
Я, конечно же, получал удовольствие от игры, старался нащупать как по-максимуму нивелировать случайность — в этом суть головоломки, её интерес. Зачем же играть в тетрис с одними палками? Просто наряду с самой игрой мне показались увлекательными и другие вопросы, которым и посвящен пост. Он же никак не связан с достижением максимального тайла — это только вдохновило доработать и оформить родившиеся ранее (ещё на этапе сбора 16 тыс. блока) размышления.
Что касается механики игры, возможно даже, что я достаточно глубоко её понимаю и близок к идеальной тактике. Но у меня нет в этом уверенности и нет идей, как строго сформулировать и обосновать эту самую абсолютно правильную теорию игры. Это же совсем другой предмет исследования, который мне пока не под силу. В то же время просто вывалить на сообщество своё непродуманное до конца, бесструктурное мнение о том, как лучше проходить головоломку, нет никакого желания и, уверен, никому не нужно.
Заранее новая цель для автора.
UFO just landed and posted this here
Ничего не измениться может в случае, если подвинули фишки в другом направлении (не в том, в котором пара чисел может сложиться).
Но «максимум ходов» всё равно имеет смысл, т.к. в случае хода игры в любом случае будут изменения – появление новой фишки.
Но «максимум ходов» всё равно имеет смысл, т.к. в случае хода игры в любом случае будут изменения – появление новой фишки.
Выбор модели — вопрос творческий. Главное, чтобы она позволяла решить поставленную задачу, а так — чем проще, тем лучше, полностью согласен!
Касательно вашего замечания — немного повторюсь с norlin. Даже если в наборе есть одна или несколько пар одинаковых чисел это не значит, что человек обязан хоть одну из них объединять в более крупный блок. В реальной игре такая ситуация не редкость. И что самое главное — это никоим образом не лишает смысла подсчет максимума ходов! Наоборот, только подчеркивает насколько это интересный результат! Ведь оказалось, что наибольшее возможное количество действий не зависит от выбранной пользователем стратегии (если при этом ему удалось добраться-таки до финала). Напротив, искомое число зависит только от ходов машины — сколько четвёрок она сгенерирует. Чем больше — тем быстрее всё закончится и тем меньше очков нам светит.
Предлагаемая вами модель, действительно, проще, но не ставит ли она новых, ещё более сложных вопросов? Например, обоснуйте кратко почему если в игре 2048 можно собрать тайл 2n, то и в условиях модели это обязательно удастся? Ведь её состояния никак не связаны с процессом игры — пользователь может собрать несколько блоков за один ход, в том числе и одинаковых, а в модели это невозможно.
Если у вас есть очевидное доказательство этого важного факта, то переход к новым конструкциям скорее всего оправдан. В ином случае нам нет смысла искать максимальный тайл в модели, так как в игре 2048 он может оказаться совершенно другим.
Спасибо за комментарий!
Касательно вашего замечания — немного повторюсь с norlin. Даже если в наборе есть одна или несколько пар одинаковых чисел это не значит, что человек обязан хоть одну из них объединять в более крупный блок. В реальной игре такая ситуация не редкость. И что самое главное — это никоим образом не лишает смысла подсчет максимума ходов! Наоборот, только подчеркивает насколько это интересный результат! Ведь оказалось, что наибольшее возможное количество действий не зависит от выбранной пользователем стратегии (если при этом ему удалось добраться-таки до финала). Напротив, искомое число зависит только от ходов машины — сколько четвёрок она сгенерирует. Чем больше — тем быстрее всё закончится и тем меньше очков нам светит.
Предлагаемая вами модель, действительно, проще, но не ставит ли она новых, ещё более сложных вопросов? Например, обоснуйте кратко почему если в игре 2048 можно собрать тайл 2n, то и в условиях модели это обязательно удастся? Ведь её состояния никак не связаны с процессом игры — пользователь может собрать несколько блоков за один ход, в том числе и одинаковых, а в модели это невозможно.
Если у вас есть очевидное доказательство этого важного факта, то переход к новым конструкциям скорее всего оправдан. В ином случае нам нет смысла искать максимальный тайл в модели, так как в игре 2048 он может оказаться совершенно другим.
Спасибо за комментарий!
Скорее всего утверждение (У1) действительно можно доказать, насколько просто и изящно — сходу оценить сложно. Правда оно даже в формулировке опирается не на исходную предметную область (игру 2048), а как раз на ту модель, которую вы считаете излишне трудной и от которой хотите уйти.
Думаю, что ваши идеи все-таки могут упростить и сделать более строгими выкладки, изложенные в посте, просто они требуют тщательного осмысления и адаптации.
В любом случае спасибо! Приятно, что кто-то углубился именно в теоретические аспекты исследования. Пределов совершенства нет и все здравые мысли обязательно пригодятся, не сейчас — так чуть позже.
Думаю, что ваши идеи все-таки могут упростить и сделать более строгими выкладки, изложенные в посте, просто они требуют тщательного осмысления и адаптации.
В любом случае спасибо! Приятно, что кто-то углубился именно в теоретические аспекты исследования. Пределов совершенства нет и все здравые мысли обязательно пригодятся, не сейчас — так чуть позже.
Открытый вопрос в этой игре (без сохранений): допустим, что компьютер целенаправленно играет против человека, и оба это знают. Получается детерминированная игра с полной информацией. Каким будет её результат при наилучшей игре обоих?
Sign up to leave a comment.
Математика и игра 2048