practica2.sws -- Sage

Anuncio
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)
Descargar