worked example: numbers-to-words
description:
convert integers into English words
code:
ones |0> #=> |>
ones |1> => |one>
ones |2> => |two>
ones |3> => |three>
ones |4> => |four>
ones |5> => |five>
ones |6> => |six>
ones |7> => |seven>
ones |8> => |eight>
ones |9> => |nine>
tens |10> => |ten>
tens |11> => |eleven>
tens |12> => |twelve>
tens |13> => |thirteen>
tens |14> => |fourteen>
tens |15> => |fifteen>
tens |16> => |sixteen>
tens |17> => |seventeen>
tens |18> => |eighteen>
tens |19> => |nineteen>
ten |20> => |twenty>
ten |30> => |thirty>
ten |40> => |forty>
ten |50> => |fifty>
ten |60> => |sixty>
ten |70> => |seventy>
ten |80> => |eighty>
ten |90> => |ninety>
tens |*> #=> smerge[" "] sdrop ( ten times-by[10] int-divide-by[10] |_self> . ones mod[10] |_self> )
hundreds-rule |*> #=> smerge[" and "] (hundreds int-divide-by[100] mod[1000] |_self> . tens mod[100] |_self>)
thousands-rule |*> #=> thousands int-divide-by[1000] mod[1000000] |_self>
millions-rule |*> #=> millions int-divide-by[1000000] mod[1000000000] |_self>
hundreds |0> #=> |>
hundreds |*> #=> ones |_self> __ |hundred>
thousands |0> #=> |>
thousands |*> #=> hundreds-rule |_self> __ |thousand>
millions |0> #=> |>
millions |*> #=> hundreds-rule |_self> __ |million>
n2w |0> => |zero>
n2w |*> #=> smerge[", "] sdrop (millions-rule |_self> . thousands-rule |_self> . hundreds-rule |_self>)
examples:
n2w |0>
|zero>
n2w |3>
|three>
n2w |15>
|fifteen>
n2w |53>
|fifty three>
n2w |735>
|seven hundred and thirty five>
n2w |12000>
|twelve thousand>
n2w |12500>
|twelve thousand, five hundred>
n2w |987654321>
|nine hundred and eighty seven million, six hundred and fifty four thousand, three hundred and twenty one>
-- or all at once:
table[number, n2w] split |0 3 15 53 735 12000 987654321>
+-----------+----------------------------------------------------------------------------------------------------------+
| number | n2w |
+-----------+----------------------------------------------------------------------------------------------------------+
| 0 | zero |
| 3 | three |
| 15 | fifteen |
| 53 | fifty three |
| 735 | seven hundred and thirty five |
| 12000 | twelve thousand |
| 987654321 | nine hundred and eighty seven million, six hundred and fifty four thousand, three hundred and twenty one |
+-----------+----------------------------------------------------------------------------------------------------------+
source code:
load numbers-to-words.sw
see also:
big-numbers-to-words
Home