Examples
[cc1516.git] / examples / demo / peano.spl
diff --git a/examples/demo/peano.spl b/examples/demo/peano.spl
new file mode 100644 (file)
index 0000000..f8e8c70
--- /dev/null
@@ -0,0 +1,53 @@
+ackerman(m, n){
+       if(m ==0){
+               return n+1;
+       } else {
+               if(m>0 && n == 0){
+                       return ackerman(m-1, 1);
+               } else {
+                       return ackerman(m-1, ackerman(m, n-1));
+               }
+       }
+}
+
+hyper(n, a, b){
+       if(n == 0){                                     return b + 1;
+       } else { if(b == 0 && n == 1){  return a;
+       } else { if(b == 0 && n == 2){  return 0;
+       } else { if(b == 0 && n >= 3){  return 1;
+       } else {                                                return hyper(n-1, a, hyper(n, a, b - 1));
+       }}}}
+}
+
+main(){
+       print("s(3)=", hyper(0, 3, 3));
+       print("3+3=", hyper(1, 3, 3));
+       print("3*3=", hyper(2, 3, 3));
+       print("3^4=", hyper(3, 3, 4));
+       print("2|3=", hyper(4, 2, 3));
+       
+       print("a(0, 0)=", ackerman(0, 0));
+       print("a(0, 1)=", ackerman(0, 1));
+       print("a(0, 2)=", ackerman(0, 2));
+       print("a(0, 3)=", ackerman(0, 3));
+
+       print("a(1, 0)=", ackerman(1, 0));
+       print("a(1, 1)=", ackerman(1, 1));
+       print("a(1, 2)=", ackerman(1, 2));
+       print("a(1, 3)=", ackerman(1, 3));
+
+       print("a(2, 0)=", ackerman(2, 0));
+       print("a(2, 1)=", ackerman(2, 1));
+       print("a(2, 2)=", ackerman(2, 2));
+       print("a(2, 3)=", ackerman(2, 3));
+
+       print("a(3, 0)=", ackerman(3, 0));
+       print("a(3, 1)=", ackerman(3, 1));
+       print("a(3, 2)=", ackerman(3, 2));
+       print("a(3, 3)=", ackerman(3, 3));
+
+       print("a(4, 0)=", ackerman(4, 0));
+/*     print("a(4, 1)=", ackerman(4, 1));
+       print("a(4, 2)=", ackerman(4, 2));
+       print("a(4, 3)=", ackerman(4, 3));*/
+}