bug fix in xrange() that would cause it to yield bogus values
[vox.git] / examples / generators.vx
blobacacfad08f5be952286ca4e7167048a2a39bfac0
1 /*\r
2 *Random number function from The Great Computer Language shootout\r
3 *converted to a generator func\r
4 */\r
5 \r
6 function gen_random(max) {\r
7         local last=42\r
8         local IM = 139968;\r
9         local IA = 3877;\r
10         local IC = 29573;\r
11         for(;;){  //loops forever\r
12                 yield (max * (last = (last * IA + IC) % IM) / IM);\r
13         }\r
14 }\r
16 local randtor=gen_random(100);\r
18 print("RAND NUMBERS \n")\r
20 for(local i=0;i<10;i+=1)\r
21         print(">"+resume randtor+"\n");\r
23 print("FIBONACCI \n")\r
24 function fiboz(n)\r
25 {\r
26         local prev=0;\r
27         local curr=1;\r
28         yield 1;\r
30         for(local i=0;i<n-1;i+=1)\r
31         {\r
32                 local res=prev+curr;\r
33                 prev=curr;\r
34                 yield curr=res;\r
35         }\r
36         return prev+curr;\r
37 }\r
39 foreach(val in fiboz(10))\r
40 {\r
41         ::print(">"+val+"\n");\r