Problem17
1 から 5 までの数字を英単語で書けば one, two, three, four, five であり、全部で 3 + 3 + 4 + 4 + 5 = 19 の文字が使われている。
では 1 から 1000 (one thousand) までの数字をすべて英単語で書けば、全部で何文字になるか。
注: 空白文字やハイフンを数えないこと。例えば、342 (three hundred and forty-two) は 23 文字、115 (one hundred and fifteen) は20文字と数える。なお、"and" を使用するのは英国の慣習。
役に立ちそうにないけど面白い問題。
Haskell
main=print $ 3+8+ (sum $ map threedigits [1..999]) threedigits n |n<100 =twodigits n |mod n 100==0 =lower (div n 100) +7 -- 100,200,..,900 |otherwise =lower (div n 100) +7+3+ twodigits (mod n 100) twodigits n |n<20 =lower n |otherwise =upper (div n 10)+lower (mod n 10) upper n=last $ take (n-1) [6,6,6,5,4,7,6,6] -- 20,30,..,90 lower n=last $ take (n+1) [0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,6,9,8,8] -- 0-19
answer
21114
合ってるのやらどうなのやら。