Fer una funció (balancejat s) que, donada una seqüència no buida s de caràcters (,),[,], (balancejat s) ens ha de dir si s està ben balancejada.
Vam veure la funció balancejat al primer tema (a dia d’avui, a la plana 46, tema 1) com un dels primers exemples de funcions en Clojure. Aquella versió de balancejat era una traducció quasi directe d’una versió imperativa de l’algorisme, ja que tot just començàvem a estudiar Clojure i no en sabíem prou.
Ara volem que feu una versió més funcional de balancejat. Feu servir reduce.
Input
(balancejat "()")
(balancejat "[](")
(balancejat "([()][()()[]])")
(balancejat "[]()[(())]([]")
(balancejat '(\[ \( \) \( \) \]))
Output
true false true false true