85 lines
2.3 KiB
Text
85 lines
2.3 KiB
Text
[ [ table
|
|
$ "zero" $ "one" $ "two"
|
|
$ "three" $ "four" $ "five"
|
|
$ "six" $ "seven" $ "eight"
|
|
$ "nine" $ "ten" $ "eleven"
|
|
$ "twelve" $ "thirteen"
|
|
$ "fourteen" $ "fifteen"
|
|
$ "sixteen" $ "seventeen"
|
|
$ "eighteen" $ "nineteen" ] do ] is units ( n --> $ )
|
|
|
|
[ [ table
|
|
$ "nonety" $ "tenty" $ "twenty"
|
|
$ "thirty" $ "forty" $ "fifty"
|
|
$ "sixty" $ "seventy" $ "eighty"
|
|
$ "ninety" ] do ] is tens ( n --> $ )
|
|
|
|
[ $ "" swap
|
|
dup 99 > if
|
|
[ 100 /mod swap units
|
|
$ " hundred" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
over size 0 > if
|
|
[ dip [ $ " and " join ] ]
|
|
dup 19 > if
|
|
[ 10 /mod swap tens
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
over size 0 > if
|
|
[ over -1 peek space != if
|
|
[ dip [ space join ] ] ]
|
|
units join ] is triplet ( n --> $ )
|
|
|
|
[ $ "" swap
|
|
dup 999999999999999 > if
|
|
[ 1000000000000000 /mod swap triplet
|
|
$ " quadrillion" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
dup 999999999999 > if
|
|
[ over size 0 > if
|
|
[ dip [ $ ", " join ] ]
|
|
1000000000000 /mod swap triplet
|
|
$ " trillion" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
dup 999999999 > if
|
|
[ over size 0 > if
|
|
[ dip [ $ ", " join ] ]
|
|
1000000000 /mod swap triplet
|
|
$ " billion" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
dup 999999 > if
|
|
[ over size 0 > if
|
|
[ dip [ $ ", " join ] ]
|
|
1000000 /mod swap triplet
|
|
$ " million" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
dup 999 > if
|
|
[ over size 0 > if
|
|
[ dip [ $ ", " join ] ]
|
|
1000 /mod swap triplet
|
|
$ " thousand" join
|
|
swap dip join
|
|
dup 0 = iff drop ]done[ ]
|
|
over size 0 > if
|
|
[ dip [ $ ", " join ] ]
|
|
triplet join
|
|
dup reverse witheach
|
|
[ char , = if
|
|
[ i split
|
|
behead drop
|
|
$ " and" swap
|
|
join join
|
|
conclude ] ] ] is name$ ( n --> $ )
|
|
|
|
10 times
|
|
[ 10 18 random
|
|
1+ ** random
|
|
dup echo
|
|
say " is:"
|
|
name$ nest$
|
|
60 wrap$ cr cr ]
|