Balanced brackets: Difference between revisions

Content added Content deleted
Line 6,193: Line 6,193:
<lang scheme>(define (balanced-brackets string)
<lang scheme>(define (balanced-brackets string)
(define (b chars sum)
(define (b chars sum)
(cond ((and (null? chars) (= 0 sum))
(cond ((< sum 0)
#f)
((and (null? chars) (= 0 sum))
#t)
#t)
((null? chars)
((null? chars)
Line 6,199: Line 6,201:
((char=? #\[ (car chars))
((char=? #\[ (car chars))
(b (cdr chars) (+ sum 1)))
(b (cdr chars) (+ sum 1)))
((= sum 0)
((char=? #\] (car chars))
#f)
(b (cdr chars) (- sum 1)))
(else
(else
(b (cdr chars) (- sum 1)))))
(#f)))
(b (string->list string) 0))
(b (string->list string) 0))