Implementeu una funcions solucions que ens doni totes les permutacions correctes de parells de parèntesis tot seguint l’esquema backtracking descrit als apunts de l’assignatura.
Recordeu afegir al vostre codi solució el següent:
(defn bTck [succ obj] ;; ja coneixeu flip i foldr, les fem servir aquí
(letfn [(bTck' [v]
(cond
(empty? v) []
(obj (peek v)) (conj (bTck' (pop v)) (peek v))
:else (let [x (peek v)]
(recur (foldr (flip conj) (pop v) (succ x))))))]
(fn [inicial]
(bTck' [inicial]))))
Input
(solucions 3)
Output
(()()() ()(()) (())() (()()) ((())))