Ssylka

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

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

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

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

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


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

19019Действительно ли «зомби-клетки» провоцируют самую распространенную форму эпилепсии и... 19018Генетический анализ мумий гепардов из саудовской Аравии открыл путь к возрождению... 19017Вредоносная кампания в Chrome перехватывает управление HR-системами и блокирует... 19016Глубоководные оползни раскрыли историю мегаземлетрясений зоны Каскадия за 7500 лет 19015Насколько глубоки ваши познания об эволюции и происхождении человека? 19014Как уязвимость CodeBreach в AWS CodeBuild могла привести к глобальной атаке через ошибку... 19013Затерянный фрагмент древней плиты пионер меняет карту сейсмических угроз Калифорнии 19012Генетические мутации вызывают слепоту менее чем в 30% случаев вопреки прежним прогнозам 19011Завершено строительство космического телескопа Nancy Grace Roman для поиска ста тысяч... 19010Вязкость пространства и фононы вакуума как разгадка аномалий расширения вселенной 19009Приведет ли массовое плодоношение дерева Риму к рекордному росту популяции какапо? 19008Как уязвимость CVE-2026-23550 в плагине Modular DS позволяет захватить управление сайтом? 19007Может ли уличная драка французского авантюриста раскрыть кризис американского гражданства... 19006Может ли один клик по легитимной ссылке заставить Microsoft Copilot и другие ИИ тайно... 19005Утрата истинного мастерства в эпоху алгоритмов и скрытые механизмы человеческого...