Comment detail

アルファベットの繰り上がり (Nested Flatten)
AAA以降にも対応してみました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(define (number->excel n)
  (define (refs n)
    (let ((quo (quotient (- n 1) 26))
          (rem (remainder (- n 1) 26)))
      (if (< quo 27) (list quo rem)
          (append (refs quo) (list rem)))))

  (let ((alpha (lambda (i) (integer->char (+ 65 i))))
        (ls (refs n)))
    (with-output-to-string
        (lambda ()
          (display
           (if (zero? (car ls)) ""
               (alpha (- (car ls) 1))))
          (for-each (lambda (x) (display (alpha x))) (cdr ls)))))
  )

(let loop ((n 1) (m 100))
  (cond ((<= n m)
         (display (number->excel n))
         (and (not (= n m)) (display ", "))
         (loop (+ n 1) m))
        (else (display #\newline))))

Index

Feed

Other

Link

Pathtraq

loading...