Например,

я есть функция ниже, которая преобразует ввод чисел в вывод частично переведенных слов этих чисел.

Используя продукт и частное, он добавляет слово представление чисел при разбиении числа на группы.

Например:

(number-name 87969087) -> '(87 million 969 thousand 87)
(number-name 1000000) -> '(1 million)

Я пытаюсь завершить свою проблему, полностью переведя те числа, которые также меньше 1000. Я пытаюсь реализовать функцию менее 1000, которая будет отображать эти меньшие числа по мере составления списка. Рядом:

;; for less than 1000
; state words for 1-19
(define baseNumbers '(one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen))

а также

; state words for multiples of ten
(define multiples '(twenty thirty forty fifty sixty seventy eighty ninety))

так

(number-name 1110) -> '(one thousand one hundred ten)

Также было трудно придумать способ отображения входа 0 для отображения в виде нуля, делая так, чтобы ноль не отображался, если на входе было что-то отличное от 0.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

(define (number n)
  (define units '(thousand million billion trillion quadrillion))
  (define (nsplit n units acc lst)
    (define q (quotient n 1000))
    (define r (remainder n 1000))
    (if (zero? n) lst
        (cond [(zero? acc)
               (if (zero? r)
                   (nsplit q units (add1 acc) lst)
                   (nsplit q units (add1 acc) (cons r lst)))]
              [(zero? r)
               (nsplit q (cdr units) acc lst)]
              [else
               (nsplit q (cdr units) acc (cons r (cons (car units) lst)))])))
  (nsplit n units 0 empty))

Ответы на вопрос(1)

Ваш ответ на вопрос