blob: 4c757700232cc791325f2bb5b010f3f8d6655516 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#lang racket
(require rackunit)
(define/contract (balanced-string-split s)
(-> string? exact-integer?)
(for/fold ([acc 0]
[count 0]
#:result count)
([c (string->list s)])
(let* ([increment (case c
[(#\R) 1]
[(#\L) -1])]
[new-acc (+ increment acc)]
[new-count (case new-acc
[(0) (add1 count)]
[else count])])
(values new-acc new-count))))
(check-eq? (balanced-string-split "RLRRLLRLRL") 4)
|