def UltimosN(L, n, L2=[]): if not n: return L2 L2.append(L[-1]) return UltimosN(L[:-1], n-1, L2) print(UltimosN([1,2,3,4,5], 3)) def invertir(L): return L[::-1] def combinaciones(L, n): if len(L) == n:return [L] if not n:return [[ ]] c = [] for i in combN(L[1:], n - 1): c.append([L[0]] + i) c += combN(L[1:], n) return c def permutaciones(L): if len(L) <= 1: return [L] c = [] for i in range(len(L)): for j in permutaciones(L[:i] + L[i+1:]): c.append([L[i]] + j) return c print(permutaciones(["A", "B", "C","D"])) def nextPerm(L): i= len(L)-2 j= len(L) -1 while i >= 0 and L[i] >=L[i+1]: i -= 1 if i ==-1:return L[::-1] while L[j] <= L[i]: j -= 1 L[i], L[j] = L[j], L[i] x,y = i+1, len(L)-1 while x < y: L[x],L[y] = L[y],L[x] x+=1 y-=1 return L
Standard input is empty
[5, 4, 3] [['A', 'B', 'C', 'D'], ['A', 'B', 'D', 'C'], ['A', 'C', 'B', 'D'], ['A', 'C', 'D', 'B'], ['A', 'D', 'B', 'C'], ['A', 'D', 'C', 'B'], ['B', 'A', 'C', 'D'], ['B', 'A', 'D', 'C'], ['B', 'C', 'A', 'D'], ['B', 'C', 'D', 'A'], ['B', 'D', 'A', 'C'], ['B', 'D', 'C', 'A'], ['C', 'A', 'B', 'D'], ['C', 'A', 'D', 'B'], ['C', 'B', 'A', 'D'], ['C', 'B', 'D', 'A'], ['C', 'D', 'A', 'B'], ['C', 'D', 'B', 'A'], ['D', 'A', 'B', 'C'], ['D', 'A', 'C', 'B'], ['D', 'B', 'A', 'C'], ['D', 'B', 'C', 'A'], ['D', 'C', 'A', 'B'], ['D', 'C', 'B', 'A']]