好的。所以我想知道如何創建一個將隨機數字轉換爲英文單詞組件的函數。(SCHEME)編號 - >英文列表
如(1001 - >「(一千)或0 - >」(零) 和(數名階乘20 - >「(二三次方432萬億902 兆8個十億1.76億六百 四萬))
我對計算器以前用戶合作,得到的東西,變成一個長數爲3點部分的數字(1341100是百萬,341000 1百0數萬0的人)
#lang r5rs
(define (three-names n)
(if (zero? n)
"zero"
(let loop ((n n)
(units '((10 one) (10 ten) (10 hundred) (1000 thousand) (1000 million) (1000 billion) (1000 trillion) (1000 quadrillion) (1000 quintillion)
(1000 sextillion) (1000 septillion) (1000 octillion) (1000 nonillion)
(1000 decillion) (1000 undecillion) (1000 duodecillion) (1000 tredecillion)
(1000 quatturodecillion) (1000 sexdillion) (1000 septendecillion) (1000 octodecillion)
(1000 novemdecillion) (1000 vigintillion)))
(ARRAY '()))
(if
(or (zero? n) (null? units))
ARRAY
(let* ((unit (car units)) (div (car unit)) (english (cadr unit)))
(let
((q (quotient n div)) (r (remainder n div)))
(loop q
(cdr units)
(cons r (cons english ARRAY)))))))))
我唯一理解的現在是讓這個有值0-20:
(= x 0) zero
(= x 1) one
...
(> x 1000) thousand
(> x 1000000) million
但對一個,這些將不會被輸出到一個和兩個名單,不知道還能做什麼?
而且這是怎麼從你的[前一個問題]不同的(http://stackoverflow.com/q/35530887/201359)? –
輸出是相似的,但非常不同。而不是有3個數字後跟佔位符(數千或數十),它是整個返回的字符串 – Anitun