Comment detail

アルファベットの繰り上がり (Nested Flatten)

This comment is reply for 826 shiro: streamのstreamになってるんで...(アルファベットの繰り上がり). Go to thread root.

あい、仰るとおり、必要ないです。
もう、途中から意地になってやってました。orz
やりなおしました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
(define (stream-iota* . rest)
  (define (countup s l v)
    (if (null? v)
      ()
      (let1 vn (countup (cdr s) (cdr l) (cdr v))
        (cond ((null? vn) (list (+ 1 (car v))))
              ((= (car l) (car vn)) (cons* (+ 1 (car v)) 0 (cdr vn)))
              (else (cons (car v) vn))))))
  (let* ((start (map car rest))
         (lim (map cadr rest)))
    (let loop ((v start))
        (stream-cons v (stream-delay (loop (countup start lim v)))))))

(define i->char (compose integer->char (pa$ + 65)))

(print (stream->list
         (stream-take
           (stream-map
             (compose (apply$ string)
                      (map$ i->char)
                      (remove$ negative?))
             (stream-iota* '(-1 26) '(0 26))) 100)))

Index

Feed

Other

Link

Pathtraq

loading...