【发布时间】:2011-11-10 08:45:07
【问题描述】:
我们刚从大学的计划开始,我需要一些帮助来完成我的任务。
我们将编写一个将数字翻译成单词的程序,EG: 1 to "one"。
它必须适用于 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 定义为一个)。
【问题讨论】:
-
我对Scheme不熟悉,只能协助解决方案背后的逻辑。先看看能不能把 0 到 999 之间的数字转换成单词形式。然后按照自己的方式转换更大数量级的数字。此外,如果您以相反的顺序定义这些对可能会有所帮助,即 (0, 'zero') (1, 'one') 等。如果方案具有像 python 那样的字典结构,那么它真的有助于解决问题.