Number letter counts
2014-09-12
Problem 017: Number letter counts
If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
Solution:
v
033544355436688779886
0366555766
$
$ v-1 < v-1 <
>54*>:::1g"0"-\1p#^_54*>:::2g"0"-\2p|
v **25"d" 0 $$<
v <
v $< >:55+/2g\55+% v
: >:54*`| >"d"/1g70 v
>0\>:!#v_:"d"\`| ^0g1< >:"d"%!| v <
v < >:"}"8*-#^_$380v>:"d"/1g\ "d"%v
^ < <\3\7<
>+# \:# _+ \ 1- :|
@.+_ #! #:\ #+<
033544355436688779886
0366555766
$
$ v-1 < v-1 <
>54*>:::1g"0"-\1p#^_54*>:::2g"0"-\2p|
v **25"d" 0 $$<
v <
v $< >:55+/2g\55+% v
: >:54*`| >"d"/1g70 v
>0\>:!#v_:"d"\`| ^0g1< >:"d"%!| v <
v < >:"}"8*-#^_$380v>:"d"/1g\ "d"%v
^ < <\3\7<
>+# \:# _+ \ 1- :|
@.+_ #! #:\ #+<
Start
??
Pause
Reset
Output:
Stack: (0)
Explanation:
There are only N
kinds of numbers:
0
-20
: Get the length from a precomputed list20
-99
: Get the length of the first word from a precomputed list and the length of the second word (second digit) from the previous point100
-999
: Get the length of the first word from a precomputed list and the length of the second and third word (second digit) from the previous point1000
: Get the hard coded value
Note: Interestingly this program operates completely on the stack - only the initializing method sets a few "constant fields" to per-definied values
Interpreter steps: | 179 076 |
Execution time (BefunExec): | 47ms (3.81 MHz) |
Program size: | 48 x 15 (fully conform befunge-93) |
Solution: | 21124 |
Solved at: | 2014-09-12 |