Implementeu una funcions solucions que ens doni totes les permutacions correctes de n 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
(()()() ()(()) (())() (()()) ((())))