Programaci´on—Certamen 2 (CC) - Martes 9 de Junio de 2015 Nombre:
1.
Rol:
[25 %] Realice el ruteo de los siguientes programas e indique qu´ que´ es lo que imprimen. Cada vez que el valor de una variable cambie, escr´ıbalo ıbalo en una nueva fila de la tabla. Recuerde que si una variable es de tipo string, debe colocar su valor entre comillas simples ’ ’. Si una variable almacena una funcion, ´ coloque el nombre de esta e´ sta como valor (sin comillas). Importante: La tabla tiene suficientes filas.
global def f2(L,i): L[i+ L[ i+1] 1] = L[ L[i] i] i = i- 1 return L,i
L
f1 t
f2 i
val j
L
def f1(t): for i in range(1,len(t)): val va l = t[ t[i] i] j = i - 1 while j>=0 and t[j]>val: t,j t, j = f2 f2(t (t,j ,j) ) t[j+ t[ j+1] 1] = va val l return t
L = [6 [6,3 ,3,4 ,4] ] L = f1( 1(L L) print L
An´alisis An a´ lisis de algoritmo Analice el siguiente algoritmo y determine, en pocas palabras, lo que realiza. No debe usar m´ mas a´ s del espacio indicado. # n nume numero ro ente entero ro def f(n): l = [] for i in range(len(str(n))-1,-1,-1): x = n/(1 (10 0**i) l.append(x) n=n %(10 %(10**i) return l
i
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Programaci´on—Certamen 2 (CC) - Martes 9 de Junio de 2015 Nombre:
2.
Rol:
[35 %] El prestamista Vito Corleone, aburrido de perseguir a sus clientes, ha solicitado la ayuda de ´ astro de la programaci´ ´ para resolver sus problemas log´ algun programacion log´ısticos. ısticos. Vito cuenta con la lista clientes, la que tiene tuplas con el nombre de cada cliente, el monto adeudado y la fecha del ultimo ´ pago (tambi´en en dentro de una tupla). clie cl ient ntes es = [('Don Ramon' 3500 00, , (9 (9, , 4, 20 2014 14)) )), , ('Miguel' , 27 2785 85, , (3 (30, 0, Ramon', 35 10, 10 , 20 2014 14)) )), , ('Cesar', 10 100, 0, (2 (28, 8, 5, 20 2015 15)) )), , # ... ]
Nota: Esto es solo ´ un ejemplo, considere que la lista puede tener muchos clientes. Sin embargo, asuma que cada nombre de cliente aparece s´olo una vez.
Impleme ement ntee la funci funci´on o´ n deuda_total(clientes), a) Impl que reciba como entrada la lista de tuplas clientes, y retorne la suma de las deudas de todos los deudores.
>>> deuda_total(clie deuda_total(clientes) ntes) 6385
mayor_deudor(clie dor(clientes, ntes, ultimo), que retorne el nombre del cliente funcion ´ mayor_deu b) Implemente la funci´ que tiene la mayor deuda, y que ademas a´ s su ultimo ´ pago haya sido realizado en el a no ˜ ultimo. Si no hay clientes con pagos en el a˜no no ultimo, retorne ret orne un string s tring vac´ıo. ıo. >>> mayor_deudor(cli mayor_deudor(clientes, entes, 2014) 'Don Ramon' Ramon' pagar(clientes, pago) que recibe la lista clientes y una tupla Implemente la funci´ funcion o´ n pagar(clientes, c) Implemente pago compuesta por el nombre de quien paga, el monto que cancela y la fecha en que lo hace. La funcion ´ modifica y retorna la lista clientes, descontando la deuda y actualizando la fecha del ultimo pago, segun ´ ´ se indique en la tupla pago. Si la deuda llega a 0, debe borrar al cliente de esta lista. No es necesario considerar el caso en que se paga m´ mas a´ s de lo que se debe. >>> pag pagar ar(cl (clie iente ntes, s, (' ('Mig Migue uel', l', 85, (3, 6, 20 2015) 15))) )) [('D [( 'Don on Ra Ramo mon' n', , 35 3500 00, , (9 (9, , 4, 20 2014 14)) )), , (' ('Mi Migu guel el', ', 27 2700 00, , (3 (3, , 6, 20 2015 15)) )), , (' Cesar Ce sar', ', 10 100, 0, (2 (28, 8, 5, 20 2015) 15))] )] >>> pag pagar ar(cl (clie iente ntes, s, (' ('Ces Cesar ar', ', 100 100, , (4, 6, 20 2015) 15))) )) [('Do [(' Don n Ra Ramon mon', ', 35 3500, 00, (9, 4, 20 2014) 14)), ), (' ('Mig Migue uel', l', 270 2700, 0, (3 (3, , 6, 2015) 2015))] )]
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Programaci´on—Certamen 2 (CC) - Martes 9 de Junio de 2015 Nombre:
3.
Rol:
[40 %] El villano mas a´ s malvado sobre la faz de la tierra, Ultron, tiene catalogado a todos los superh´ superh eroes e´ roes de la tierra de la siguiente forma: # nombre: nombre: [detalle [detalle, , edad, edad, habilida habilidad, d, (min-po (min-poder, der, max-pod max-poder)] er)] super sup erher heroe oes s = { 9 5)] , 'Iron 'Iron man' man': ['mk42', 5 0 , 'uni-rayo', (45, 95 000 0 , 'mjolnir', (50, 10 100) 0)] ], 'Thor': ['hijo 'hijo de odin' odin', 1000 (1, , 10 10)] )], , 'Condorito' :['de pelotillehue' pelotillehue', 40, 'washington', (1 'Chapulin 'Chapulin Colorado' Colorado': ['no conta contaban ban con mi astuc astucia' ia', 40 40, , 'chipote chillon' , (4 (40, 0, 90 90)] )], , # ... } # nombre nombre : nombre_ nombre_asoc asociado iados s asoc as ocia iado dos s = { 'Iron 'Iron man' man': set(['Thor', 'Black 'Black Widow' Widow', 'Hawkeye', 'Hulk']), 'Thor': set(['Iron 'Iron man' man', 'Hulk', 'Chapulin 'Chapulin Colorado' Colorado' ]), 'Condorito' : set(['Don 'Don Chuma' Chuma', 'Hulk']), 'Chapulin 'Chapulin Colorado' Colorado' : set(['Condorito' , 'Thor']), # ... }
Pese a ser la inteligencia artificial m as a´ s avanzada jam´ jamas a´ s creada, se le complica un poco cuando llega el momento de programar, por ello pide ayuda a los alumnos de IWI-131 en lo siguiente:
o´ n diferencias_pod a) Desarrollar la funcion diferencias_poder(super er(superheroes, heroes, diferenciapoder diferenciapoder, , umbral) que reciba el diccionario superheroes, el valor diferenciapoder y un valor de umbral. La ´ debe retornar una lista de tuplas de todos los superheroes funcion e´ roes que tengan una diferencia diferencia de poder (diferencia min-poder y max-poder) mayor o igual a diferenciapoder y un min-poder superior al umbral. Cada tupla debe contener nombre, detalle, habilidad y max-poder. >>> diferenc diferencias_ ias_pode poder(su r(super perhero heroes, es, 30, 39) [('Ir [(' Iron on ma man', n', 'mk 'mk42' 42', , 'un 'unii-ray rayo', o', 95) 95), , ('T ('Tho hor', r', 'hi 'hijo jo de od odin in', ', ' mjoln mj olnir' ir', , 100 100), ), (' ('Cha Chapu pulin lin Col Color orado ado', ', 'n 'no o co conta ntaba ban n co con n mi as astuc tucia ia', ', 'chipote 'chipote chillon' chillon', , 90)]
quien e´ n es amigo de quien. Dos asociados se consideran amigos si cada uno b) Ultron necesita saber qui´ tiene al otro en el diccionario asociados. Genere una funci on o´ n amigos(asociados) que reciba el diccionario asociados y retorne un diccionario con los amigos, donde la llave es el superh´ superheroe e´ roe y como valor un conjunto con los amigos de este. e´ ste. Si un superh´eroe eroe no tiene amigos, no se agrega. >>> amigos(asociados amigos(asociados) ) {'Iron {'Iron man man': ': set(['Th set(['Thor'] or']), ), 'Ch 'Chapul apulin in Colorado Colorado': ': set set(['T (['Thor' hor']), ]), 'Thor': 'Thor': set(['Ir set(['Iron on man man', ', 'Chapuli 'Chapulin n Col Colorad orado']) o'])} }
´ mental de Scarlet Witch, Ultron lograr´ c) Gracias a la manipulaci´ manipulacion lograra´ que los superh´ superheroes e´ roes amigos que posean una diferencia de poder superior a 40 y adem as a´ s que superen un umbral de min-poder de versus(superheroes rheroes, , asociados) asociados) que 30 luchen entre ellos. Se pide generar una funcion o´ n versus(supe reciba reciba el diccionario diccionario superheroes, el diccionario asociados y retorne una lista de tuplas con los enfrentamientos de los amigos. NOTA: no se deben repetir las parejas. >>> versus(supeheroe versus(supeheroes, s, asociados) asociados) [('Iron [('Iron man', man', 'Thor'), 'Thor'), ('C ('Chapu hapulin lin Colorado Colorado', ', 'Th 'Thor') or')] ]