Programaci´on—Certamen 2 - Jueves 12 de Mayo de 2016 Nombre:
1.
Rol:
[20 %] 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 ss(L): for i in range(0, len(L)): j = i k = i while j < len(L): if L[k] L[k] > L[ L[j] j]: : k = j j += 1 L[i] L[ i], , L[ L[k] k] = L[ L[k] k], , L[ L[i] i] return L
L
L
ss i
j
k
L = [3 [3,1 ,1,2 ,2] ] print ss(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. # reci recibe be 2 conj conjun unto tos s def f(conj1, f(conj1, conj2): conj2): u = conj nj1 1 | conj nj2 2 i = conj nj1 1 & conj nj2 2 return float(len(i))/len(u)
Programaci´on—Certamen 2 - Jueves 12 de Mayo de 2016 Nombre:
2.
Rol:
[40 %] Una organizacion ´ internacional de conservacion ´ construyo´ un domo de cristal para mantener un micro clima en una cierta superficie. Para esto, se instalaron miles de paneles de cristal, contando cada uno de ellos con varios sensores que reportan informaci on o´ n diariamente a un ´ indicando computador computador central. Cada sensor transmite una vez al d´ıa ıa una tupla con su medici on, la fecha, su identificador unico ´ y el valor de la medici on. o´ n. Como ejemplo, una medici´ medicion o´ n ser´ ser´ıa: ıa: (201 (2 016, 6, 3, 27 27, , 'aa:01:10', 0.0 0.0021 021) ). Todas estas mediciones son colocadas en una lista en el computador central, la cual es mantenida ordenada descendentemente por el valor medido. Esto facilita la recuperacion o´ n posterior de mediciones, debido a que por el gran volumen del registro resulta imposible ordenarlo con cualquiera de los algoritmos disponibles en la actualidad. A modo de ejemplo, un posible registro ser´ se r´ıa: ıa : regist regi stro ro = [ (201 (2 016, 6, 1, 25 25, , 'd2:00:10', 0.0112), 0.0112), (2015 (20 15, , 10 10, , 24 24, , '3e:15:c2', 0.0105), 0.0105), (201 (2 015, 5, 11 11, , 3, '28:0b:5c', 0.0009), 0.0009), # ... ]
Usted debe: agreg regar ar_me _medic dicio ion(r n(reg egist istro, ro, A, M, D, id, val val) ), la que agrega la funcion ´ ag a) Construir la funci´ informaci´on capturada al registro. Considere A el a˜no, M el mes y D el d´ıa ıa de la medicion. ´ >>> agregar_ agregar_medi medicion cion(reg (regist istro, ro, 2016, 2016, 3, 27, 'aa:01:1 'aa:01:10', 0', 0.0021) 0.0021) >>> pri print nt reg regist istro ro [(201 [(2 016, 6, 1, 25 25, , 'd 'd2:0 2:00: 0:10' 10', , 0.0 0.0112 112), ), (2 (2015 015, , 10, 24, '3e '3e:1 :15:c 5:c2' 2', , 0. 0.010 0105), 5), (2016 (20 16, , 3, 27 27, , 'aa 'aa:01 :01:1 :10', 0', 0.0 0.002 021), 1), (20 (2015, 15, 11, 3, '2 '28:0 8:0b: b:5c' 5c', , 0.0009)] corregir_med _medicio icion(re n(regist gistro, ro, A, M, D, id, nvo_valo nvo_valor) r) que cofuncion o´ n corregir b) Construir la funci´ rrige el valor medido de un sensor. La funcion o´ n recibe como par´ parametro a´ metro el registro, el ano, ˜ mes y d´ıa ıa de la medicion o´ n a corregir, el identificador unico ´ y el nuevo valor medido. Considere que luego de esta actualizaci´on el registro debe permanecer ordenado como se indic´o en el enunciado. >>> corregir corregir_med _medicio icion(re n(regis gistro, tro, 201 2016, 6, 3, 27, 'aa 'aa:01: :01:10', 10', 0.0 0.0221) 221) >>> pri print nt reg regist istro ro [(201 [(2 016, 6, 3, 27 27, , 'a 'aa:0 a:01: 1:10' 10', , 0.0 0.0221 221), ), (2 (2016 016, , 1, 25 25, , 'd 'd2:0 2:00:1 0:10' 0', , 0. 0.011 0112) 2), , (2015 (2 015, , 10 10, , 24 24, , '3e '3e:15 :15:c :c2', 2', 0.0 0.010 105), 5), (20 (2015, 15, 11, 3, '2 '28:0 8:0b: b:5c' 5c', , 0.0009)] sensores_sobre_umbral(r mbral(registro, egistro, u), la que recibe un valor de Construir la funci funci´on ´ sensores_sobre_u c) Construir medicion o´ n usado como umbral y tambi´ tambien e´ n el registro. Esta funcion o´ n entrega un listado con todos aquellos sensores, cuyo valor medido se encontro´ por sobre el umbral u entregado. Este listado no debe contener identificadores duplicados. >>> sensores_sobre_u sensores_sobre_umbral(r mbral(registro, egistro, 0.01) ['aa:01:10', ['aa:01:10', 'd2:00:10', 'd2:00:10', '3e:15:c2'] '3e:15:c2']
Programaci´on—Certamen 2 - Jueves 12 de Mayo de 2016 Nombre:
3.
Rol:
[40 %] Una empresa de encomiendas almacena la informacion ´ de despacho de valijas haciendo uso de las siguientes estructuras: encomiendas corresponde a un diccionario, donde la llave representa el c odigo o´ digo de una
valija y su valor corresponde a una tupla, con el largo, alto y ancho de esta e´ sta en cent´ımetros. ımetros. ´ de la valija y destinos es un conjunto de tuplas. Cada tupla est a´ compuesta por el codigo la tupla ( x, y) correspondiente al punto donde debe ser entregada en k en km m. A continuaci´on se presenta un ejemplo de las estructuras: encom enc omien ienda das s = { 10234 10 234: : (9 (90, 0, 90 90, , 50 50), ), 34102 34 102: : (1 (100, 00, 140 140, , 20) 20), , 3689 36 890: 0: (2 (25, 5, 50, 50, 70), 70), # ... ... }
destin des tinos os = set([ (10234 (10 234, , (-4 (-4, , 15) 15)), ), (36890 (36 890, , (2, 4)) 4)), , (34102, (34102, (18, -13)), -13)), # ... ])
El ingreso (monetario) que obtiene la empresa por trasladar una valija depende del volumen (cm (cm 3 ) y la distancia. La f ormula ´ para calcular el ingreso en pesos es: ingreso = 0,1 · volumen · distancia Donde el volumen multiplicando largo, alto y ancho de la valija (cm (cm3 ) y la distancia se se obtiene calcula como ( x2 − x1 )2 + ( y2 − y1 )2 . Considere que la empresa esta´ ubicada en el punto ( 0, 0) y los camiones se mueven en l´ l´ınea ınea recta desde la empresa al punto de destino a una velocidad de 60km 60km/ / h. La empresa dispone de 10 camiones y se desea, de ser posible, asignarle a cada uno un ultimo ´ despacho en el d´ d´ıa, ıa, el cual no debe tardar m as a´ s de 30 minutos en llegar a destino. Por supuesto se desea hacer tal asignaci´on buscando el mayor ingreso para la empresa. viajes_a_realizar(encomi r(encomiendas, endas, destinos) destinos) Para ello le solicita a usted crear la funcion o´ n viajes_a_realiza la cual recibe como par´ parametro a´ metro el diccionario diccionario encomiendas y el conjunto destinos y retorna una lista con a lo m as a´ s 10 codigos o´ digos correspondientes a las valijas a despachar que reportar an a´ n el mayor ingreso a la empresa.
Usted puede crear las funciones que estime necesarias para la resoluci´on on de este problema.