Number names: Difference between revisions

no edit summary
m (→‎{{header|Phix}}: added syntax colouring the hard way)
No edit summary
Line 6,065:
one hundred and twenty-three million, four hundred and fifty-six thousand, seven hundred and eighty-nine"
</pre>
 
=={{header|Shale}}==
 
<lang Shale>#!/usr/local/bin/shale
 
maths library
 
0 ones:: dup var "zero" =
1 ones:: dup var "one" =
2 ones:: dup var "two" =
3 ones:: dup var "three" =
4 ones:: dup var "four" =
5 ones:: dup var "five" =
6 ones:: dup var "six" =
7 ones:: dup var "seven" =
8 ones:: dup var "eight" =
9 ones:: dup var "nine" =
10 teens:: dup var "ten" =
11 teens:: dup var "eleven" =
12 teens:: dup var "twelve" =
13 teens:: dup var "thirteen" =
14 teens:: dup var "fourteen" =
15 teens:: dup var "fifteen" =
16 teens:: dup var "sixteen" =
17 teens:: dup var "seventeen" =
18 teens:: dup var "eighteen" =
19 teens:: dup var "nineteen" =
2 tens:: dup var "twenty" =
3 tens:: dup var "thirty" =
4 tens:: dup var "forty" =
5 tens:: dup var "fifty" =
6 tens:: dup var "sixty" =
7 tens:: dup var "seventy" =
8 tens:: dup var "eighty" =
9 tens:: dup var "ninety" =
 
say dup var {
commaFlag dup var swap =
andFlag dup var swap =
n dup var swap =
h dup var n 100 / =
t dup var n 100 % =
o dup var n 10 % =
 
h 0 > {
commaFlag { "," print commaFlag false = } ifthen
h.value ones:: " %s hundred" printf
} ifthen
 
h 0 > t 0 > and t 0 > andFlag and or { " and" print commaFlag false = } ifthen
 
t 9 > {
t 19 > {
commaFlag { "," print commaFlag false = } ifthen
t 10 / tens:: " %s" printf
o 0 > { o.value ones:: "-%s" printf } ifthen
} {
t 9 > { commaFlag { "," print } ifthen t.value teens:: " %s" printf } ifthen
} if
} {
o 0 > { commaFlag { "," print } ifthen o.value ones:: " %s" printf } ifthen
} if
} =
 
speak dup var {
n dup var swap =
m dup var n 1000000 / =
t dup var n 1000 / 1000 % =
h dup var n 1000 % =
 
n "%10d ->" printf
m 0 > { m.value false false say() " million" print } ifthen
t 0 > { t.value false m 0 > say() " thousand" print } ifthen
h 0 > m 0 == t 0 == and or { h.value m 0 > t 0 > or dup say() } ifthen
"" println
} =
 
"Stock numbers" println
1 speak()
10 speak()
100 speak()
1000 speak()
1001 speak()
100001000 speak()
100001001 speak()
123456789 speak()
987654321 speak()
100200300 speak()
10020030 speak()
 
"" println
"Randomly generated numbers" println
i var
i 0 =
{ i 10 < } {
random maths::() 1000000000 % speak() // Cap it to less than 1 billion.
i++
} while</lang>
 
{{out}}
 
<pre>Stock numbers
1 -> one
10 -> ten
100 -> one hundred
1000 -> one thousand
1001 -> one thousand and one
100001000 -> one hundred million, one thousand
100001001 -> one hundred million, one thousand and one
123456789 -> one hundred and twenty-three million, four hundred and fifty-six thousand, seven hundred and eighty-nine
987654321 -> nine hundred and eighty-seven million, six hundred and fifty-four thousand, three hundred and twenty-one
100200300 -> one hundred million, two hundred thousand, three hundred
10020030 -> ten million, twenty thousand and thirty
 
Randomly generated numbers
430442705 -> four hundred and thirty million, four hundred and forty-two thousand, seven hundred and five
542387280 -> five hundred and forty-two million, three hundred and eighty-seven thousand, two hundred and eighty
612564971 -> six hundred and twelve million, five hundred and sixty-four thousand, nine hundred and seventy-one
620405002 -> six hundred and twenty million, four hundred and five thousand and two
203302758 -> two hundred and three million, three hundred and two thousand, seven hundred and fifty-eight
39259420 -> thirty-nine million, two hundred and fifty-nine thousand, four hundred and twenty
911059261 -> nine hundred and eleven million, fifty-nine thousand, two hundred and sixty-one
370836312 -> three hundred and seventy million, eight hundred and thirty-six thousand, three hundred and twelve
293702626 -> two hundred and ninety-three million, seven hundred and two thousand, six hundred and twenty-six
124444645 -> one hundred and twenty-four million, four hundred and forty-four thousand, six hundred and forty-five</pre>
 
=={{header|Sidef}}==