summaryrefslogtreecommitdiff
path: root/src/3rdparty/squirrel/samples/generators.nut
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/squirrel/samples/generators.nut')
-rw-r--r--src/3rdparty/squirrel/samples/generators.nut42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/3rdparty/squirrel/samples/generators.nut b/src/3rdparty/squirrel/samples/generators.nut
new file mode 100644
index 000000000..9853e0964
--- /dev/null
+++ b/src/3rdparty/squirrel/samples/generators.nut
@@ -0,0 +1,42 @@
+/*
+*Random number function from The Great Computer Language shootout
+*converted to a generator func
+*/
+
+function gen_random(max) {
+ local last=42
+ local IM = 139968;
+ local IA = 3877;
+ local IC = 29573;
+ for(;;){ //loops forever
+ yield (max * (last = (last * IA + IC) % IM) / IM);
+ }
+}
+
+local randtor=gen_random(100);
+
+print("RAND NUMBERS \n")
+
+for(local i=0;i<10;i+=1)
+ print(">"+resume randtor+"\n");
+
+print("FIBONACCI \n")
+function fiboz(n)
+{
+ local prev=0;
+ local curr=1;
+ yield 1;
+
+ for(local i=0;i<n-1;i+=1)
+ {
+ local res=prev+curr;
+ prev=curr;
+ yield curr=res;
+ }
+ return prev+curr;
+}
+
+foreach(val in fiboz(10))
+{
+ ::print(">"+val+"\n");
+}