Write a program that takes an integer as input and writes the integer in English.
ie:
enter integer: 23
twenty-three.
Here's my code in common lisp:
(format t "~r" (read))
Name:
Anonymous2008-05-29 13:26
List-based
import Char
import Control.Arrow
import List
main = interact (unlines . map translate . lines)
translate ('-': num) = case translateAbs num of abs@"zero" -> abs
abs -> "minus " ++ abs
translate ('+': num) = translateAbs num
translate num = translateAbs num
translateAbs num
| length num > (3 * 22) = error "translate: Number too long"
| otherwise =
foldl1 ((++) . (++ ", ")) . checkZero . reverse . filter (not . null) . zipWith suffix suffixes
. map translateTrio . splitInTrios $ map digitToInt num
where suffix s [] = []
suffix [] htu = htu
suffix s htu = htu ++ " " ++ s