написать нечто вроде алгоритма Дейкстры, который для графов.
Возьми новое значение :s1, пройдись по всем мапам на всю вложенность, при этом тут возникает сложность, что s5, например может иметь вид {:d {:s1 :a} :e {:d {:f :s1}}}, т.е. s1 мы можем встретить не единожды и нам надо как-то реализовать - туда не ходи, сюда ходи.
В итоге мы для s5 должны иметь вектор векторов vec-of-paths [[:d] [:e :d]], c которым мы сделаем нечто вроде,
(loop [current-d d5
remained-paths vec-of-paths]
(if (empty? vec-of-paths)
current-d
(recur (update-in current-d (first vec-of-paths) (generate-data-for-schema))))
(rest vec-of-paths))))
Осталось ответить на вопрос, как мы сохраняем пути.
Думаю, что да, решение на зипперах.
Обсуждают сегодня