整数引数をとり、番号の範囲内の位置にある整数を返す関数を作成しようとしています。例えば。リストを3つのグループと記号に分割する
(番号2135567667)
「(20億1.35億567000 667)
私は商と剰余を右から左に3者のグループに整数を分割すると考えました。出力センテンス内の適切なシンボルを差し挟むするには、文
「(千百万億兆千兆)
を使用しています。
(番号1000000)
「(100万)
又は
(十億一)
:しかしグループ全体は以下のようなゼロであろう場合があります10億1
問題を解決する方法がありますか?または、グループとその名前がゼロの場合は、どのように除外できますか?あなたがリストを構築するために取ることができ
(define 1to19 '(one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen))
(define multiple '(twenty thirty forty fifty sixty seventy eighty ninety))
(let loop ((n n) (units thousands) (acc '()))
(cond
((= n 0) acc)
((< 0 n 20) (cons (list-ref 1to19 (- n 1)) acc))
((< n 100) (cons (list-ref multiples (- (quotient n 10) 2))
(loop (remainder n 10) '() acc)))
((< n 1000) (loop (quotient n 100)
'()
(cons 'hundred (loop (remainder n 100) '() res))))
を、あなたは '()= 0 GRP(あれば)'グループを省略することができます。 –