http://localhost:8000/home/admin/158/print practica2.sws IMD-IS 2011-2012 Sesión de laboratorio 2 Pilas. Ejercicio 1 L=[34,56,87] tres elementos a=L.pop(); print a desapilado en una varible print L # Esta lista representa una pila con L.append(57); print L # Apilamos el numero 57 L.pop(); print L # Desapilamos L.pop(); print L # Desapilamos L.pop(); print L # Desapilamos L.pop() una lista vacia ! # ¡ No tenemos derecho a despilar # Desapilamos. Ponemos el elemento a # Así queda la lista L Permutaciones producidas por pilas. Ejercicio 5 class memoize: calculos def __init__(self, function): "option remember" de Maple self.function = function self.memoized = {} # para no repetir # equivalente a http://localhost:8000/home/admin/158/print def __call__(self, *args): try: return self.memoized[args] except KeyError: self.memoized[args] = self.function(*args) return self.memoized[args] @memoize def cadenas(n): """ Produce todas las cadenas admisibles de 2n bits. ARGUMENTOS: n : un entero no-negativo. """ if n == 0: # Examinamos a parte el caso base: cadenas de longitud 0 return([ [] ]) # Hay una única cadena de 0 bit, es [] else: res=[] for k in [1..n]: # 2k es el primer retorno a 0 A=cadenas(k-1) B=cadenas(n-k) for a in A: for b in B: res.append([1]+a+[0]+b) # Aquí "+" es para la concatenación de listas return(res) def permuta(C): """ Calcula la permutacion f(C) obtenida de una cadena de bits admisible C ARGUMENTOS: C : cadena de bits admisible. """ i=1 # primer elemento de la lista de espera p=[] # pila, inicialmente vacía res=[] # los numeros que salen de la pila, en su orden de salida for b in C: if b == 1: p.append(i) # apilar i=i+1 # preparar el elemento siguiente de http://localhost:8000/home/admin/158/print la lista de espera else: a=p.pop() # desapilar, sale a res.append(a) # poner a en res return(res) Contando las permutaciones producibles por pila. Ejercicio 8 @memoize def cuenta(n): """ Calcula el numero de permutaciones de {1,2,...,n} producibles por pila. ARGUMENTOS: n : entero no-negativo """ ... ... ... ... ... completalo tu... ... ... return(c)