diff options
Diffstat (limited to '017.lua')
-rw-r--r-- | 017.lua | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +function num_to_words(n) + local digits = {"one", "two", "three", "four", "five", + "six", "seven", "eight", "nine"} + local teens = {"eleven", "twelve", "thirteen", "fourteen", "fifteen", + "sixteen", "seventeen", "eighteen", "nineteen"} + local tens = {"ten", "twenty", "thirty", "forty", "fifty", + "sixty", "seventy", "eighty", "ninety"} + local ret = "" + if n == 1000 then return digits[1] .. "thousand" end + if n >= 100 then + local hundred = math.floor(n / 100) + ret = ret .. digits[hundred] .. "hundred" + n = n - hundred * 100 + if n > 0 then ret = ret .. "and" end + end + if n >= 10 then + if n == 10 then return ret .. tens[1] end + if n < 20 then + return ret .. teens[n - 10] + else + local ten = math.floor(n / 10) + ret = ret .. tens[ten] + n = n - ten * 10 + end + end + if n >= 1 then + ret = ret .. digits[n] + end + return ret +end + +local sum = 0 +for i = 1, 1000 do + local text = num_to_words(i) + print(i .. ": " .. text .. " (" .. text:len() .. ")") + sum = sum + text:len() +end +print(sum) |