diff options
author | Jesse Luehrs <doy@tozt.net> | 2009-05-13 23:32:40 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2009-05-13 23:32:40 -0500 |
commit | 7e7b56db42ceb8d2b8973eae678fa4b58d5d3659 (patch) | |
tree | 7a5cb816809d632e30227c1e39485ed63b500e80 /17.lua | |
download | projecteuler-7e7b56db42ceb8d2b8973eae678fa4b58d5d3659.tar.gz projecteuler-7e7b56db42ceb8d2b8973eae678fa4b58d5d3659.zip |
add old solutions
Diffstat (limited to '17.lua')
-rw-r--r-- | 17.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) |