# -*- coding: utf-8 -*- # Wiederholungsrechenzeichen alias Metaoperatoren alias Hyperoperatoren mit Invers #Logarithmus nimmt 1. Argument des Exponentials und gibt 2. Argument zurück. #Mit 0 kann es aber noch nicht so gut umgehen, also nur "einfache" Zahlen (positiv "natürlich"). #log_1(1) gibt 0 aus, was als Fehlermeldung zu werten ist. #Meta-Operator n-ter Stufe def MO(a,n,b): #a (|^n) b r=a if (n<1): r+=1 if (n==1): r=a+b if (n==2): r=a*b if (n==3): r=a**b if (n>3): for i in range(1,b): #b-1 mal, also z.B.: a°a°a mit b=3, dann 2-mal °a ausführen r=MO(a,n-1,r) #a und r vertauscht damit bei Exponential "unten angebaut" wird #print r #print "MO Ergebnis="+str(r) return r #Inverser Meta-Operator n-ter Stufe def IMO(r,n,l): # r (|v n) l z=0 if (n<1): z=r-1 if (n==1): z=r-l if (n==2): while (r>0): r=r-l z+=1 #print z #print r if (n==3): while (r>1): r=r/l z+=1 #print z #print r if (n>3): while (r>1): r=IMO(r,n-1,l) z+=1 #print z #print r return z #Test #jetzt richtig for i in range(1,4): for j in range(1,4): for k in range(1,4): print i,j,k,IMO(MO(i,j,k),j,i)