Рубрика «головоломки» - 2

Потерянные подарки Санты. Анонс IT-квеста на 6 января - 1

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

Вдруг свет погас, раздался грохот и всё помещение трюма заполнили клубы дыма. Когда дым развеялся, подарков не было, а на полу лежала записка, которая гласила:

{Зловеще} ХА-ХА-ХА! {/Зловеще} Эй, гики в красных шапочках, все ваши подарки у нас! Чтобы их забрать, нужно пройти квест из череды загадок!

Читать полностью »

Введение

В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.Читать полностью »

Ловим кота с TLA+ - 1 Формальные методы считаются эффективным, но неоправданно сложным способом обеспечения надежности программного обеспечения. Используемые при этом инструменты существенно отличаются от привычных программисту. Эта статья написана с целью снизить порог вхождения в этот инструментарий. Я применю систему model checking не для решения сложно формулируемых задач спецификации ПО, а для решения понятной даже школьникам головоломки.

Вы находитесь в прямом коридоре с семью комнатами по одну сторону. В одной из них находится кот. За один шаг можно заглянуть в одну из комнат, если там есть кот, он пойман. Как только дверь закроется, кот перейдет в одну из соседних комнат к той, в которой находился. Задача — поймать кота.
Читать полностью »

image

Пару месяцев назад мне наконец пришлось признать, что я недостаточно умён, чтобы пройти некоторые уровни головоломки Snakebird. Единственным способом вернуть себе часть самоуважения было написание солвера. Так я мог бы притвориться, что создать программу для решения головоломки — это почти то же самое, что и решить её самому. Код получившейся программы на C++ выложен на Github. Основная часть рассматриваемого в статье кода реализована в search.h и compress.h. В этом посте я в основном буду рассказывать об оптимизации поиска в ширину, который бы потребовал 50-100 ГБ памяти, чтобы он уместился в 4 ГБ.

Позже я напишу ещё один пост, в котором будет описана специфика игры. В этом посте вам нужно знать, что мне не удалось найти никаких хороших альтернатив грубому перебору (brute force), потому что ни один из привычных трюков не сработал. В игре множество состояний, потому что есть куча подвижных или толкаемых объектов, при этом важна форма некоторых из них, которая может меняться со временем. Не было никакой пригодной консервативной эвристики для алгоритмов наподобие A*, позволяющих сузить пространство поиска. Граф поиска был ориентированным и заданным неявно, поэтому одновременный поиск в прямом и обратном направлении оказался невозможным. Единственный ход мог изменить состояние множеством несвязанных друг с другом способов, поэтому не могло пригодиться ничего наподобие хеширования Зобриста.

Приблизительные подсчёты показали, что в самой большой головоломке после устранения всех симметричных положений будет порядка 10 миллиардов состояний. Даже после упаковки описания состояний с максимальной плотностью размер состояния составлял 8-10 байт. При 100 ГБ памяти задача оказалась бы тривиальной, но не для моей домашней машины с 16 ГБ памяти. А поскольку Chrome нужно из них 12 ГБ, мой настоящий запас памяти ближе к 4 ГБ. Всё, что будет превышать этот объём, придётся сохранять на диск (старый и ржавый винчестер).
Читать полностью »

В этом посте описывается генератор уровней для моей игры-головоломки Linjat. Пост можно читать и без подготовки, но он легче усвоится, если сыграть в несколько уровней. Исходный код я выложил на github; всё обсуждаемое в статье находится в файле src/main.cc.

Примерный план поста:

  • Linjat — это логическая игра, в которой нужно закрыть все числа и точки в сетке линиями.
  • Головоломки процедурно генерируются при помощи комбинации из солвера, генератора и оптимизатора.
  • Солвер пытается решить головоломки так, как это делал бы человек, и присваивает каждой головоломке оценку интересности.
  • Генератор головоломок создан таким образом, чтобы можно было с лёгкостью менять одну часть головоломки (числа) и при этом все остальные части (точки) менялись таким образом, чтобы головоломка оставалась решаемой.
  • Оптимизатор головоломок многократно решает уровни и генерирует новые вариации из наиболее интересных, найденных на текущий момент.

Правила

Чтобы понять, как работает генератор уровней, нужно, к сожалению, разобраться с правилами игры. К счастью, они очень просты. Головоломка состоит из сетки, содержащей пустые квадраты, числа и точки. Пример:

Создание процедурного генератора головоломок - 1

Цель игрока — прочертить вертикальную или горизонтальную линию через каждое из чисел при соблюдении трёх условий:

  • Линия, идущая через число, должна иметь ту же длину, что и число.
  • Линии не могут пересекаться.
  • Все точки необходимо закрыть линиями.

Пример решения:

Создание процедурного генератора головоломок - 2

Ура! Дизайн игры готов, UI реализован, и теперь единственное, что осталось — найти несколько сотен хороших головоломок. А для подобных игр обычно не имеет смысла пытаться создавать такие головоломки вручную. Это работа для компьютера.
Читать полностью »

Поставлен рекорд по сборке кубика Рубика … ногами - 1

На Хабре регулярно публикуются новости о рекордах по сборке кубика Рубика. Последнее достижение принадлежит австралийцу Феликсу Земдегсу, который смог решить головоломку всего за 4,221 секунды. Так быстро собирать кубик могут лишь те люди, кто регулярно (и помногу) тренируются. Тот же Феликс купил свой первый кубик в возрасте 12 лет. В 2010 он поставил первый рекорд мира, ну а в прошлом году сделал вообще практически невозможное.

Ну а теперь появился еще один рекордсмен, который собирает кубик ногами. Понятно, что для выполнения более-менее нормальных манипуляций с головоломкой ногами нужны тренировки. И действительно, к текущему результату в 16,96 секунд чемпион по имени Даниэль Роуз-Левин шел около пяти лет.
Читать полностью »

Puzzle Script — это минималистичный игровой движок для создания головоломок для HTML5, имеет открытые исходники. Примеры готовых игр можно посмотреть здесь.

Часть 1. Создаём первую игру на Puzzle Script.

Puzzle Script — это бесплатная онлайн-программа, которая используется для создания игр-головоломок. Наиболее известен она благодаря созданию головоломок с толканием блоков наподобие моей The Nodus. В этой части мы создадим игру, изучив базовые функции Puzzle Script, а в следующей приступим к программированию.

Создание игр-головоломок на Puzzle Script - 1

Перейдите на веб-сайт движка. Нажмите Make a Game, чтобы открыть редактор Puzzle Script.
Читать полностью »

Предупреждение врача. Остерегайтесь этих головоломок. Побочные эффекты могут включать потерянное послеобеденное время, скомканные волосы и восклицания «А-а-а-х, вот как это делается» настолько громкие, что могут треснуть оконные стёкла.

Несколько месяцев назад я наткнулся в твиттере на математические головоломки Катрионы Ширер. Они сразу меня увлекли: каждая головоломка такая осязаемая, ручной работы, словно просит её решить. И на каждую вы можете легко потратить час времени, а то и больше.

Катриона разрешила мне подвесить вас на эти задачки — и поделилась 20 своими любимыми головоломками. Она даже удовлетворила моё любопытство и восхищение, дав интервью (см. в конце статьи).

Наслаждайтесь. И не говорите, что врач не предупреждал.
Читать полностью »

Кубик Рубика — уже не просто легендарная игрушка-головоломка, а скорее синоним чему-то сложному, над чем нужно задуматься.

С 70х годов прошлого века создатели кубиков традиционно шли путем постоянного усложнения «игрушки», добавляя лишние клетки, меняя и совершенствуя форму. Однако теперь все поменялось, и кубики стали упрощать.

Три умных кубика Рубика: Xiaomi, Roobo и GoCube - 1

Так появилась «обучающая» категория смарт-кубиков, а затем и обучающе-развлекательная. Правда, их не так уж много.
Читать полностью »

Существует множество игр жанра «пазл-платформер», но мне редко удаётся найти такую, в которой правильно соблюдён баланс сюжета, головоломок и графики. Всегда находится какой-нибудь аспект, который меня напрягает. Я очень хотел создать игру с красивой графикой, интересным сюжетом и классическими платформенными головоломками, но стремился ещё и к тому, чтобы все эти три аспекта глубоко сочетались друг с другом. В In The Shadows я старался сделать так, чтобы каждый аспект имел своё обоснование. Сделать так, чтобы всё работало вместе — сложная задача, которая сама по себе является головоломкой.

Дизайн игр-головоломок на примере In The Shadows - 1

Дневники разработки In The Shadows, собранные за три года работы


Сюжет In The Shadows посвящён преодолению страхов, противостоянию реальности, использованию страха темноты в качестве символа. Чтобы обеспечить целостность, всё в игре освещается в реальном времени и отбрасывает настоящие тени — основная часть механик связана с пугающим созданием-тенью, обретением контроля над ним. Все три аспекта игры связаны друг с другом. Никаких хитростей — сюжет передаётся как через графику, так и через головоломки с механиками. На то, чтобы всё это заработало вместе, ушло много времени, это оказалось гораздо сложнее, чем я ожидал.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js