В задаче про то как из e надо получить длинную молекулу я действовал полным перебором, но не пытаясь построить молекулу от е, а наоборот, пытаясь сократить результирующую молекулу до е, применяя правила в обратном порядке. Если при этом добавить некоторое количество «жадности» алгоритму, то есть сначала «сворачивать» максимально длинные подцепочки, то результат получается за какое-то совершенно смешное количество итераций. Мне интересно, а как другие её решали?
Я тоже шёл в обратную сторону. Но оказалось, что жадный алгоритм быстро попадает в тупик и не может из него выбраться. Анализ показал, что тупиком является цепочка CaRnFAr, перед которой не идёт атом Th (и возможно, несколько атомов Ca). После того, как я запретил эти цепочки, алгоритм быстро что-то нашёл.
Advent of Code