def successor(base,predecessor,k): i=k-1 while True: #find out if the sequence is going up or down direction = 1 for j in xrange(0,i): #first is always ascending if predecessor[j]%2 == 1: direction *= -1; #check boundaries if (direction==1 and predecessor[i]==base[i]-1) or (direction==-1 and predecessor[i]==0): i-=1 continue elif direction==1: predecessor[i]+=1 break elif direction==-1: predecessor[i]-=1 break return predecessor