Ssylka

Сокобан в PostgreSQL: JSON и Point для складских задач

Решение задач Advent of Code 2024 с использованием PostgreSQL демонстрирует мощь SQL, выходящую за рамки стандартных представлений. Для моделирования игры «Сокобан» (перемещение ящиков по складу) использованы возможности JSON для представления карты склада и тип point для координат.
Сокобан в PostgreSQL: JSON и Point для складских задач
Изображение носит иллюстративный характер

Основная идея решения заключается в рекурсивном моделировании шагов робота. Карта склада представлена в виде JSONB-словаря, где ключами являются координаты ячеек, а значениями — типы ячеек (стена, ящик, пустое место). Движения робота моделируются как последовательность изменений координат, с учетом столкновений со стенами и необходимости толкать ящики.

В первой части задачи, с одинарными ящиками, рекурсивный шаг включает поиск первой свободной клетки в направлении движения робота и перемещение ящика, если он находится на пути. Оптимизация запроса достигается за счет материализации CTE arena и path, что позволяет избежать повторного вычисления регулярных выражений на каждом шаге рекурсии.

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


Новое на сайте

16943От сада чудес до протеина из атмосферы 16942Кратковременный сон наяву: научное объяснение пустоты в мыслях 16941Спутники Starlink создают непреднамеренную угрозу для радиоастрономии 16940Аутентификационная чума: бэкдор Plague год оставался невидимым 16939Фиолетовый страж тайских лесов: редкий краб-принцесса явился миру 16938Хроники мангровых лесов: победители фотоконкурса 2025 года 16937Танцевали ли планеты солнечной системы идеальный вальс? 16936Ай-ай: причудливый лемур, проклятый своим пальцем 16935Как рентгеновское зрение раскрывает самые бурные процессы во вселенной? 16934Уязвимость нулевого дня в SonicWall VPN стала оружием группировки Akira 16933Может ли государственный фонд единолично решать судьбу американской науки? 16932Способна ли филантропия блогеров решить мировой водный кризис? 16931Взлом через промпт: как AI-редактор Cursor превращали в оружие 16930Мог ли древний кризис заставить людей хоронить мертвых в печах с собаками? 16929Какие наушники Bose выбрать на распродаже: для полной изоляции или контроля над...