-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdecodedTeleporterFunction.txt
56 lines (52 loc) · 1.58 KB
/
decodedTeleporterFunction.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
6027: jt r[0] 6035
6030: add r[0] r[1] 1
6034: ret
6035: jt r[1] 6048
6038: add r[0] r[0] 32767
6042: set r[1] r[7]
6045: call 6027
6047: ret
6048: push r[0]
6050: add r[1] r[1] 32767
6054: call 6027
6056: set r[1] r[0]
6059: pop r[0]
6061: add r[0] r[0] 32767
6065: call 6027
6067: ret
ack(x, y):
if (x==0) {
return y+1
}
if (y==0){
return ack(x-1, sol)
}
stack.push(x)
y = call ack(x, y-1)
x = stack.pop()
return ack(x-1, y)
result is always put in r[0]
ack(x, y, z):
if (x==0) {
return y+1
}
if (y==0){
return ack(x-1, z, z)
}
y = ack(x, y-1, z)
return ack(x-1, y, z)
ack(0, y, z) = y+1
ack(1, 0, z) = ack(0, z, z) = z+1
ack(1, 1, z) = ack(0, ack(1, 0, z), z) = ack(1, 0, z)+1 = (z+1)+1 = z+(1)+1
ack(1, 2, z) = ack(0, ack(1, 1, z), z) = ack(1, 1, z)+1 = ((z+1)+1)+1 = z+(2)+1
ack(1, y, z) = ack(0, ack(1, y-1, z), z) = ack(1, y-1, z)+1 = z+y+1
ack(2, 0, z) = ack(1, z, z) = z+z+1 = 2z+1
ack(2, 1, z) = ack(1, ack(2, 0, z), z) = ack(2, 0, z)+z+1 = (2z+1)+z+1
ack(2, 2, z) = ack(1, ack(2, 1, z), z) = ack(2, 1, z)+z+1 = ((2z+1)+z+1)+z+1 = (2z+1)+2(z+1)
ack(2, y, z) = ack(1, ack(2, y-1, z), z) = ack(2, y-1, z)+z+1 = (2z+1)+y(z+1)
ack(3, 0, z) = ack(2, z, z) = (2z+1)+z(z+1) = zz+3z+1
ack(3, 1, z) = ack(2, ack(3, 0, z), z) = ack(3, 0, z)(z+1)+2z+1 = (zz+3z+1)(z+1)+2z+1
ack(3, 2, z) = ack(2, ack(3, 1, z), z) = ack(3, 1, z)(z+1)+2z+1 = ((zz+3z+1)(z+1)+2z+1)(z+1)+2z+1
ack(3, y, z) = ack(2, ack(3, y-1, z), z) = ack(3, y-1, z)(z+1)+2z+1 = y times:res(z+1)+2z+1 where first res=zz+3z+1 = opt(y)
ack(4, 0, z) = ack(3, z, z)
ack(4, 1, z) = ack(3, ack(4, 0, z), z) = ack(3, ack(3, z, z), z) = opt(opt(z))