#lang racket (define t (lambda (d) (define (b d) (foldl (lambda (e a) (cons (cons e (car (car a))) a)) (list (list (list))) d)) (define (c a) (foldl (lambda (e a) (cons e a)) (list) a)) ((lambda (d) (car (foldl (lambda (e a) (if (and (and (char=? (car e) #\e) (char=? (cdr e) #\r)) (= (car a) -1)) (cons (cdr a) (+ (cdr a) 1)) (cons (car a) (+ (cdr a) 1)))) (cons -1 -1) (cdr (c (b d)))))) (string->list d) ) ) ) (define l '("red" "sure" "racket" "referendum" "literature" "" "counterexample" "differentiation" "バカ")) (let loop ((i l)) (when (not (null? i)) (begin (display (t (car i))) (newline) (loop (cdr i)))))