moved back to old acc
[vox.git] / examples / spellnumber.vx
blob792c55ff90fb478b190759ec4834a6d43d826d55
4 local function spellnumber(n)
6     local smallnumbers = [
7         "zero", "one", "two", "three", "four", "five",
8         "six", "seven", "eight", "nine", "ten",
9         "eleven", "twelve", "thirteen", "fourteen", "fifteen",
10         "sixteen", "seventeen", "eighteen", "nineteen"
11     ]
12     local thousandpowers = [
13         " billion", " million",  " thousand", ""
14     ]
15     local decades = [
16         "", "", "twenty", "thirty", "forty",
17         "fifty", "sixty", "seventy", "eighty", "ninety"
18     ]
19     local res = "";
20     local pScaleName = thousandpowers;
21     local scaleFactor = 1000000000;   // 1 billion
22     local count = 0;
23     local function spellhundreds(n)
24     {
25         local res = "";
26         if (n > 99)
27         {
28             res = smallnumbers[n/100];
29             res += " hundred";
30             n %= 100;
31             if(n)
32             {
33                 res += " and ";
34             }
35         }
36         if (n >= 20)
37         {
38             res += decades[n/10];
39             n %= 10;
40             if(n)
41             {
42                 res += "-";
43             }
44         }
45         if (n < 20 && n > 0)
46         {
47             res += smallnumbers[n];
48         }
49         return res;
50     }
51     if (n < 20)
52     {
53         return smallnumbers[n];
54     }
55     while (scaleFactor > 0)
56     {
57         if (n >= scaleFactor)
58         {
59             local h = n / scaleFactor;
60             res += spellhundreds(h) + (pScaleName[count]);
61             n %= scaleFactor;
62             if(n)
63             {
64                 res += ", ";
65             }
66         }
67         scaleFactor /= 1000;
68         count++;
69     }
70     return res;
73 /* example output:
74 spellnumber(691677947) = six hundred and ninety-one million, six hundred and seventy-seven thousand, nine hundred and forty-seven
76 if(system.argv.len() > 1)
78     val = system.argv[1].tointeger()
79     println("spellnumber(%d) = %s".fmt(val, spellnumber(val)))
81 else
83     println("Usage: %s <number>".fmt(system.argv[0]))