Clojure - Parèntesis amb Backtracking S28790


Statement
 

pdf   zip

Implementeu una funcions solucions que ens doni totes les permutacions correctes de nn 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]))))
Public test cases
  • Input

    (solucions 3)
    

    Output

    (()()() ()(()) (())() (()()) ((())))
    
  • Information
    Author
    Gerard Escudero
    Language
    Catalan
    Official solutions
    Clojure
    User solutions
    Clojure