GMLscripts.com

Discuss and collaborate on GML scripts
Invert

You are not logged in.

#1 2016-04-08 16:34:37

AnastasiaDunbar
Member
Registered: 2015-12-22
Posts: 12

Ackermann function

Functional:

Expand///ackermann(m,n)
//Source: https://rosettacode.org/wiki/Ackermann_function#GML
var m = argument0, n = argument1;
if(m=0) {
    return (n+1)
} else if(n == 0) {
    return (ackermann(m-1,1))
} else {
    return (ackermann(m-1,ackermann(m,n-1)))
}

Imperative:

Expand///ackermann(m,n)
//Source: http://stackoverflow.com/a/1095538/4538129
var m = argument0, n = argument1;
var s = ds_stack_create();
ds_stack_push(s,m);
while (ds_stack_size(s)>0) {
   m = ds_stack_pop(s)
   if (m == 0) {
      n++
   } else if (n == 0) {
      ds_stack_push(s,m-1)
      n=1
   } else {
      ds_stack_push(s,m-1)
      ds_stack_push(s,m)
      n--
   }
}
return n

pls don't kill me xot

Last edited by AnastasiaDunbar (2016-04-08 16:40:03)

Offline

#2 2016-04-14 20:31:53

xot
Administrator
Registered: 2007-08-18
Posts: 1,240

Re: Ackermann function

ಠ_ಠ


Abusing forum power since 1986.

Offline

Board footer

Powered by FluxBB