picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

zahlwort.l (1411B)


      1 # 26may06abu
      2 # (c) Software Lab. Alexander Burger
      3 
      4 (de zahlwort (N)
      5    (cond
      6       ((not N))
      7       ((=0 N) "null")
      8       ((lt0 N) (pack "minus " (zahlw (- N))))
      9       (T (zahlw N)) ) )
     10 
     11 (de zahlw (N Flg)
     12    (cond
     13       ((=0 N))
     14       ((= 1 N) (if Flg "ein" "eins"))
     15       ((= 2 N) "zwei")
     16       ((= 3 N) "drei")
     17       ((= 4 N) "vier")
     18       ((= 5 N) "fünf")
     19       ((= 6 N) "sechs")
     20       ((= 7 N) "sieben")
     21       ((= 8 N) "acht")
     22       ((= 9 N) "neun")
     23       ((= 10 N) "zehn")
     24       ((= 11 N) "elf")
     25       ((= 12 N) "zwölf")
     26       ((= 17 N) "siebzehn")
     27       ((> 20 N)
     28          (pack (zahlw (% N 10) T) "zehn") )
     29       ((> 100 N)
     30          (pack
     31             (unless (=0 (% N 10))
     32                (pack (zahlw (% N 10) T) "und") )
     33             (get
     34                (quote
     35                   "zehn" "zwanzig" "dreissig" "vierzig" "fünfzig"
     36                   "sechzig" "siebzig" "achtzig" "neunzig" )
     37                (/ N 10) ) ) )
     38       ((> 1000 N)
     39          (pack
     40             (zahlw (/ N 100) T)
     41             "hundert"
     42             (zahlw (% N 100)) ) )
     43       ((> 1000000 N)
     44          (pack
     45             (zahlw (/ N 1000) T)
     46             "tausend"
     47             (zahlw (% N 1000)) ) )
     48       ((> 2000000 N)
     49          (pack "einemillion" (zahlw (% N 1000000))) )
     50       ((> 1000000000000 N)
     51          (pack
     52             (zahlw (/ N 1000000) T)
     53             "millionen"
     54             (zahlw (% N 1000000)) ) )
     55       (T "RIESIG") ) )