; zeros and ones
(define (zero xs)
(let ((max-count 0) (max-index -1) (prev2 -1) (prev1 -1) (count 0) (lo 0))
(do ((hi 0 (+ hi 1)) (xs xs (cdr xs))) ((null? xs) max-index)
(when (zero? (car xs)) (set! prev2 prev1) (set! prev1 hi) (set! count (+ count 1)))
(when (= count 2) (set! lo (+ prev2 1)) (set! count 1))
(when (< max-count (- hi lo -1)) (set! max-count (- hi lo -1)) (set! max-index prev1)))))
(display (zero '(1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1))) (newline)
(display (zero '(0 0 1 0 1 1 1 0 1 1))) (newline)
OyB6ZXJvcyBhbmQgb25lcwoKKGRlZmluZSAoemVybyB4cykKICAobGV0ICgobWF4LWNvdW50IDApIChtYXgtaW5kZXggLTEpIChwcmV2MiAtMSkgKHByZXYxIC0xKSAoY291bnQgMCkgKGxvIDApKQogICAgKGRvICgoaGkgMCAoKyBoaSAxKSkgKHhzIHhzIChjZHIgeHMpKSkgKChudWxsPyB4cykgbWF4LWluZGV4KQogICAgICAod2hlbiAoemVybz8gKGNhciB4cykpIChzZXQhIHByZXYyIHByZXYxKSAoc2V0ISBwcmV2MSBoaSkgKHNldCEgY291bnQgKCsgY291bnQgMSkpKQogICAgICAod2hlbiAoPSBjb3VudCAyKSAoc2V0ISBsbyAoKyBwcmV2MiAxKSkgKHNldCEgY291bnQgMSkpCiAgICAgICh3aGVuICg8IG1heC1jb3VudCAoLSBoaSBsbyAtMSkpIChzZXQhIG1heC1jb3VudCAoLSBoaSBsbyAtMSkpIChzZXQhIG1heC1pbmRleCBwcmV2MSkpKSkpCgooZGlzcGxheSAoemVybyAnKDEgMCAxIDEgMSAwIDEgMSAxIDEgMCAxIDEgMSAxIDAgMCAxIDEpKSkgKG5ld2xpbmUpCihkaXNwbGF5ICh6ZXJvICcoMCAwIDEgMCAxIDEgMSAwIDEgMSkpKSAobmV3bGluZSk=