Как бы я перевел числа в слова в схеме? - PullRequest
1 голос
/ 10 ноября 2011

Мы только начали со схемы в университете, и мне нужна помощь в выполнении моей задачи.

Мы напишем программу, которая переводит числа в слова: EG: от 1 до "одного" .

Он должен работать для всех чисел до 10 ^ 9. Я не имею ни малейшего понятия, как это сделать.
Моя основная идея состоит в том, чтобы создать какой-то массив или список, в котором я определяюэти числа в виде слов вроде этого:

('ZERO', 0) ('ONE', 1) ('TWO', 2) ('THREE', 3) ('FOUR', 4) ('FIVE', 5) ('SIX', 6)
('SEVEN', 7) ('EIGHT', 8) ('NINE', 9) ('TEN', 10) ('ELEVEN', 11) ('TWELVE', 12)
('THIRTEEN', 13) ('FOURTEEN', 14) ('FIFTEEN', 15) ('SIXTEEN', 16)
('SEVENTEEN', 17) ('EIGHTEEN', 18) ('NINETEEN', 19) ('TWENTY', 20) ('THIRTY', 30)
('FORTY', 40) ('FIFTY', 50) ('SIXTY', 60) ('SEVENTY', 70) ('EIGHTY', 80) 
('NINETY', 90) ('HUNDRED', 100) ('THOUSAND', 1000) ('MILLION', 1000000) 
('BILLION', 1000000000) ('TRILLION', 1000000000000) 
('QUADRILLION', 1000000000000000)

Затем каким-то образом проверьте входное значение в этом списке и замените числа словами.

Но реализация этого доставляет мне некоторые проблемы.

Главный вопрос, который меня беспокоит, заключается в том, может ли Scheme создавать подстроки и можно ли составить список, в котором я определяю эти числа как слова (поэтому определите 1 как одно).

1 Ответ

2 голосов
/ 10 ноября 2011
  • Вы не можете "обмануть" и сделать (определите 1 один), поскольку 1 уже определено как число:)

  • Я недумаю, вам нужно беспокоиться о подстроке в этой задаче, вы строите строку из подстрок, а не наоборот ...

    • Вам нужна операция для конкатенации строк.Я не помню, как они делают строки в схеме, хотя ...

Единственная "сложная" проблема здесь заключается в том, что вам нужно кодировать произвольные правила из английского языка.итак ...

//pseudocode, doing things the "dumb way" tons of ifs, aka cond
define to_str n = 
    if n == 1 then "one"
    ...
    if n == 3 then "thirteen"
    ..
    if 20 <= n < 30 then
       'twenty-' concatenated to  (to_str (n - 20))
    ...

После того, как такая версия заработает, вы можете подумать об абстрагировании повторяющегося потока управления через словарь или список ассоциаций, аналогичный тому, который вы упомянули в вопросе.

...