это работает! .. но это очень медленно: <</p>
def Switch(keyl):
key = keyl
L = key[len(key)-1]
R = key[len(key)-2]
key[len(key)-1] = R
key[len(key)-2] = L
return key
def Zero(y,n,f):
keyf = f
for x in range(y,n):
keyf[x]= 0
return keyf
def inkey(ke,r):
for x in ke:
if x == r:
return False
return True
def Getnum(f,li,n):
nl = []
for x in range(0,f):
nl.append(li[x])
i = li[f]
while i != n-1:
i+=1
if inkey(nl,i):
return i
def clear(f,key1,n):
key0 = key1
key0f =[]
for x in range(0,f):
key0f.append(key0[x])
notinkey =[]
for x in range(n):
if inkey(key0f,x):
notinkey.append(x)
key0 = Zero(f,n,key0)
keyl = []
for x in range(len(key0)-len(notinkey)):
keyl.append(key0[x])
for x in notinkey:
keyl.append(x)
return keyl
def plus(kee,f,n,stop):
if kee == stop:
return kee
if f == 0:
kee[0]+=1
kee = clear(1,kee,n)
return kee
if kee[f] == n-1 :
return plus(kee,f-1,n,stop)
k = Getnum(f,kee,n)
if k == None:
return plus(kee,f-1,n,stop)
kee[f]=k
kee = clear(f+1,kee,n)
return kee
def main(n):
key = []
for x in range(n):
key.append(x)
stop = []
for x in range(n-1,-1,-1):
stop.append(x)
o = 1
t = 0
while key != stop :
st = ""
for x in key:
st+=str(x)
print(st,t)
if o == 1 :
key = Switch(key)
if o == 2 :
key = plus(key,n-3,n,stop)
o = 0
t+=1
o+=1
st = ""
for x in stop:
st+=str(x)
print(st,t)
while True:
main(int(input("base ? : ")))