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