Ssylka

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

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

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

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

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


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

8661ИИ выходит в интернет: эксперимент с DeepSeek 8660Аудит безопасности Kubernetes: выбор инструментов для оперативной проверки 8659Судебные зарисовки: почему в США рисуют, а не снимают судебные процессы 8658Космические лучи: раскрытие тайн вселенной через призму частиц 8657Почему пламя едва не поглотило историю Милтон-Кинса? 8656Безопасность DeepSeek и Mixtral в корпоративных чат-ботах: сравнительный анализ 8655Миниатюрный GPT-2 на C: краткий обзор 8654Экологический императив искусственного интеллекта 8653Гимн земле и душе: бессмертие "заката солнца" Льюиса грассика гиббона 8652Оценка качества аккумуляторов аком Reactor: что изменилось за годы? 8651PHP и интернет вещей: управление умными устройствами 8650Физика Хула-Хупа: секреты успешного вращения 8649Психологические Анти-Паттерны: как избежать самосаботажа 8648Финансовый компас: создаем привычку копить деньги 8647Медвежий сон: биологическое чудо выживания в зимнем лесу