Решение Advent of Code 2024, с использованием SQL

Задача заключается в определении возможности получения заданного числа, применяя к набору чисел операции сложения, умножения и конкатенации. В первой части использована рекурсия и битовые маски для перебора комбинаций операций сложения и умножения, примененных к набору чисел. Вычисляется итоговая сумма целевых чисел, для которых возможно получить результат.
Решение  Advent of Code 2024,  с использованием SQL
Изображение носит иллюстративный характер

Во второй части задачи добавляется оператор конкатенации. Это делает невозможным использование битовых масок. Решение заключается в рекурсивном переборе всех возможных вариантов операций на каждом шаге. Используется «размножение строк» в рекурсии через unnest, при этом вычисления ограничиваются целевым значением, чтобы избежать перебора всех комбинаций.

Ключевым моментом является использование рекурсивных CTE в SQL для перебора возможных комбинаций операторов. LATERAL JOIN позволяет отфильтровывать уравнения, для которых нет решения. WITH ORDINALITY присваивает уникальные номера строкам для их идентификации. Агрегатные функции суммируют целевые числа для верных уравнений.

Использование SQL для решения задачи демонстрирует возможности языка, хотя и не является самым эффективным подходом в сравнении с императивным программированием.


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

20965Что делать с уязвимым SonicWall GMS без будущих обновлений? 20964Как ошибка APT позволяет подменить пакет и получить root-доступ? 20963Могут ли две уязвимости Xen открыть одной виртуальной машине память всего хоста? 20962Как рекламный промпт проник в настройки OpenAI Codex? 20960Apple начнёт проверять публичные ссылки на файлы в iCloud 20959Что известно о предупреждении mSecure и какие меры принять? 20958Как LLMjacking превращает корпоративные ИИ-ресурсы в чужой бизнес? 20957Что делать администраторам cPGuard после взлома канала обновлений? 20956Бэкдор в телевизоре: как Google остановила сеть из 1,3 млн Android-устройств 20955Кто может получить доступ к кошелькам через плагин CryptoPayment Gateway? 20954Критическая уязвимость Siemens IoT2050 открыла путь к удалённым командам 20953Взлом Chainstack: под угрозой оказались данные клиентов и хеши паролей 20952Четыре проверки, которые помогают найти уязвимости с реальным риском 20951Две уязвимости Barracuda открывают путь к root-доступу
Ссылка