All pastes #32074 Raw Edit

Unnamed

public text v1 · immutable
#32074 ·published 2005-12-02 03:45 UTC
rendered paste body
(define (english n)
   (define low #("one" "two" "three" "four" "five" "six" "seven" "eight"
                 "nine" "ten" "eleven" "twelve" "thirteen" "fourteen"
                 "fifteen" "sixteen" "seventeen" "eighteen" "nineteen"))
   (define tens #("twenty" "thirty" "fourty" "fifty" "sixty" "seventy" "eighty"
                  "ninety"))
   (define place #("" "thousand" "million" "billion" "trillion" "quadrillion"
                   "quintillion"))
   (define (subhundred i)
      (if (< i 20)
          (display (vector-ref low (- i 1)))
          (begin
             (display (vector-ref tens (- (quotient i 10) 2)))
             (if (> (remainder i 10) 0)
                 (begin (display "-")
                        (display (vector-ref low (- (remainder i 10) 1)))))))
       (display " "))
   (define (partial i l)
       (if (> (quotient i 1000) 0)
           (partial (quotient i 1000) (+ l 1)))
       (if (> (quotient i 100) 0)
           (begin (display (vector-ref low (- (quotient (remainder i 1000) 100) 1)))
                  (display " hundred ")))
       (if (> (remainder i 100) 0)
           (subhundred (remainder i 100)))
       (display (vector-ref place l))
       (display " "))
   (define (translate i)
       (cond ((< i 0) (display "negative ") (partial (- 0 i) 0))
             ((> i 0) (partial i 0))
             (else (display "zero")))
       (newline))
   (translate n))