Blindfolded Arithmetic/compile from Minsky machine
This python program by User:Jan jelo compiles Minsky machine program into Blindfolded Arithmetic program(state 0 means halt,and program starts from state 1).
Basically,a encodes two counters in 2^A*3^B form(It is initialized to 1 by the program),c is used as an instruction pointer(Also initialized to 1 by the program.),i is used to generate constants and store intermediate results(Non-zero input is required),other registers are used to store intermediate results.
Test if x and y are equal by 1/((x-y)*(x-y)+1)(This is used to compare the instruction pointer with a constant).
Test if counter A is equal to 0 by a-a/2*2,test if counter B is equal to 0 by (1+a-a/3*3)/2.
Increase counter A by a=a*2,decrease counter A by a=a/2.
Increase counter B by a=a*3,decrease counter B by a=a/3.
x=[cond]?y:z is equivalent to x=y*[cond]+z*(1-[cond]).
Output will be the value of a when the program halts.
program='''
inc a 2
inc a 3
inc a 4
inc b 5
dec a 4 0
'''
def compile(program):
p=[[x for x in x.split(' ')
if x in{'inc','dec','a','b'}or x.isdigit()]
for x in program.split('\n')if x!='']
res='i=i/i\nd=a*a\nd=d+i\nd=i/d\na=a+d\nd=c*c\nd=d+i\nd=i/d\nc=c+d\n'
#i=1;a=1 if a==0 else a;c=1 if c==0 else c
i=1
#test if x==y:1/((x-y)*(x-y)+1)
#test if x==0:1/(x*x+1)
#test if A==0:a-a/2*2
#test if B==0:(1+(a-a/3*3))/2
#inc A:a=a*2
#inc B:a=a*3
#dec A:a=a/((A!=0)+1)
#dec B:a=a/((B!=0)*2+1)
for x in p:
if(x[0],x[1])==('inc','a'):
res+='d=c*i\n'+i*'d=d-i\n'+'d=d*d\nd=d+i\nd=i/d\nd=d+i\n'
# d = (c=={i})+1
res+='a=a*d\n'
# inc A if d==2
res+='d=d-i\nd=i-d\nc=c*d\nd=1-d\n'+int(x[2])*'c=c+d\n'
# c = x[2] if d else c
res+='i=a*i\ni=c/c\n'
# exit if c==0
if(x[0],x[1])==('inc','b'):
res+='d=c*i\n'+i*'d=d-i\n'+'d=d*d\nd=d+i\nd=i/d\ni=i+i\nd=d*i\ni=i/i\nd=d+i\n'
# d = (c=={i})*2+1
res+='a=a*d\n'
# inc B if d==3
res+='d=d-i\ni=i+i\nd=d/i\ni=i/i\nd=i-d\nc=c*d\nd=1-d\n'+int(x[2])*'c=c+d\n'
# c = x[2] if d else c
res+='i=a*i\ni=c/c\n'
# exit if c==0
if(x[0],x[1])==('dec','a'):
res+='d=c*i\n'+i*'d=d-i\n'+'d=d*d\nd=d+i\nd=i/d\n'
# d = (c=={i})
res+='i=i+i\nb=a/i\nb=b*i\ni=i/i\nb=a-b\nb=i-b\n'
# b = (A!=0)
res+='b=b+i\na=a/b\nb=b-i\n'
# inc A
res+='e=e-e\n'+int(x[2])*'e=e+b\n'+'b=i-b\ni=i-i\n'+int(x[3])*'i=i+b\n'+'e=e+i\ni=a/a\ne=e*d\nd=i-d\ni=c*d\nc=e+i\ni=a/a\n'
# c =(x[2]if b else x[3])if d else c
res+='i=a*i\ni=c/c\n'
# exit if c==0
if(x[0],x[1])==('dec','b'):
res+='d=c*i\n'+i*'d=d-i\n'+'d=d*d\nd=d+i\nd=i/d\n'
# d = (c=={i})
res+='b=i*i\ni=i+i\ni=i+b\nb=a/i\nb=b*i\ni=i/i\nb=a-b\nb=b+i\ni=i+i\nb=b/i\ni=i/i\nb=i-b\n'
# b = (B!=0)
res+='i=i+i\nb=b*i\ni=i/i\nb=b+i\na=a/b\nb=b-i\ni=i+i\nb=b/i\ni=i/i\n'
# inc B
res+='e=e-e\n'+int(x[2])*'e=e+b\n'+'b=i-b\ni=i-i\n'+int(x[3])*'i=i+b\n'+'e=e+i\ni=a/a\ne=e*d\nd=i-d\ni=c*d\nc=e+i\ni=a/a\n'
# c =(x[2]if b else x[3])if d else c
res+='i=a*i\ni=c/c\n'
# exit if c==0
i+=1
return res
a=compile(program)
r'''
a=a.replace('/','//')
a=map(lambda x:f' {x}\n',a.split('\n'))
a='a,b,c,d,e=[0]*5;i=int(input())\ntry:\n while True:\n'+''.join(a)+'except:\n print(i)'
'''
print(a)
(Commenting out raw string quotation marks will produce a python code equivalent to Blindfolded Arithmetic code.)
For this example,the output will be:
i=i/i d=a*a d=d+i d=i/d a=a+d d=c*c d=d+i d=i/d c=c+d d=c*i d=d-i d=d*d d=d+i d=i/d d=d+i a=a*d d=d-i d=i-d c=c*d d=1-d c=c+d c=c+d i=a*i i=c/c d=c*i d=d-i d=d-i d=d*d d=d+i d=i/d d=d+i a=a*d d=d-i d=i-d c=c*d d=1-d c=c+d c=c+d c=c+d i=a*i i=c/c d=c*i d=d-i d=d-i d=d-i d=d*d d=d+i d=i/d d=d+i a=a*d d=d-i d=i-d c=c*d d=1-d c=c+d c=c+d c=c+d c=c+d i=a*i i=c/c d=c*i d=d-i d=d-i d=d-i d=d-i d=d*d d=d+i d=i/d i=i+i d=d*i i=i/i d=d+i a=a*d d=d-i i=i+i d=d/i i=i/i d=i-d c=c*d d=1-d c=c+d c=c+d c=c+d c=c+d c=c+d i=a*i i=c/c d=c*i d=d-i d=d-i d=d-i d=d-i d=d-i d=d*d d=d+i d=i/d i=i+i b=a/i b=b*i i=i/i b=a-b b=i-b b=b+i a=a/b b=b-i e=e-e e=e+b e=e+b e=e+b e=e+b b=i-b i=i-i e=e+i i=a/a e=e*d d=i-d i=c*d c=e+i i=a/a i=a*i i=c/c
and the program should output 81(3^4).