from random import sample, seed seed() def sa(a,b): if len(a) > 1: a[0],a[1] = a[1],a[0] return a,b def sb(a,b): if len(b) > 1: b[0],b[1] = b[1],b[0] return a,b def ss(a,b): sa(a,b) sb(a,b) return a,b def pa(a,b): if len(b) > 0: a.insert(0, b[0]) b.pop(0) return a,b def pb(a,b): if len(a) > 0: b.insert(0, a[0]) a.pop(0) return a,b def ra(a,b): if len(a) > 1: a.append(a.pop(0)) return a,b def rb(a,b): if len(b) > 1: b.append(b.pop(0)) return a,b def rr(a,b): ra(a,b) rb(a,b) return a,b def rra(a,b): if len(a) > 1: a.insert(0, a.pop()) return a,b def rrb(a,b): if len(b) > 1: b.insert(0, b.pop()) return a,b def rrr(a,b): rra(a,b) rrb(a,b) return a,b if __name__ == "__main__": # Generación de la pila a n = 1000 # número de elementos de la pila a = sample(range(1, n+1), n) #a = [2,1,3,6,5,8] # valores de ejemplo b = [] print('a:', a) print('b:', b) contador = 0 while len(a)>1: # se repite hasta que solo quede un elemento en la pila a # buscamos el mínimo y vamos haciendo ra hasta que el mínimo esté el primero while min(a) != a[0]: ra(a,b); contador += 1 pb(a,b); contador += 1 # luego hacemos pb # luego se hace pa pa pa pa hasta que no quede nadie en la pila b while len(b)>0: pa(a,b); contador += 1 print('a:', a) print('b:', b) print("contador:", contador) #!curl parrot.live