summaryrefslogtreecommitdiffstats
path: root/017.lua
diff options
context:
space:
mode:
Diffstat (limited to '017.lua')
-rw-r--r--017.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/017.lua b/017.lua
new file mode 100644
index 0000000..d745419
--- /dev/null
+++ b/017.lua
@@ -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)