Ejercicio: 1Eva_IIT2017_T1 Taller de juguetes en polo norte
Propuesta de solución en Python:
Los tiempos para finalizar las tareas se obtienen como la suma de los tiempos de inicio mas los tiempos de duración.
Para realizar la mayor cantidad de tareas, se usan los tiempos para finalizarlas, buscando la posición en la lista de la mayor. Al encontrarla se puede establecer el orden.
El proceso se repite para el resto de tareas. Para que no se utilice la primera encontrada se elimina de la lista asignando el tiempo final con cero.
Instrucciones en Python
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IIT2017_T1 Taller de juguetes en polo norte import numpy as np # INGRESO tareas = ['pintar soldados', 'hornear galletas', 'armar muñecos', 'cortar papel de regalo'] inicio = [ 678, 200, 240, 423] duracion = [ 300, 800, 456, 112] # PROCEDIMIENTO n = len(tareas) # tiempo finaliza tarea final = np.zeros(n,dtype=int) i = 0 while not(i>=n): final[i] = inicio[i] + duracion[i] i = i + 1 # Determina el orden finaliza = np.copy(final) orden = np.zeros(n,dtype = int) j = 0 while not(j>=n): mayor = 0 i = 1 while not(i>=n): if (final[i]>final[mayor]): mayor = i i = i + 1 orden[j] = mayor final[mayor] = 0 j = j + 1 # dias de trabajo dia = np.zeros(n,dtype = int) cual = 1 suma = 0 j = 0 while not(j>=n): suma = suma + finaliza[j] if (suma>=1440): cual = cual + 1 suma = finaliza[j] dia[j] = cual j = j + 1 # SALIDA print('finaliza') print(finaliza) print('Tareas del dia') s = 0 i = 0 while not(i>=n): cual = orden[i] s = s + finaliza[cual] print(i, cual, tareas[cual], s, dia[i]) i = i + 1
Resultado del algoritmo
finaliza [ 978 1000 696 535] Tareas del dia 0 1 hornear galletas 1000 1 1 0 pintar soldados 1978 2 2 2 armar muñecos 2674 3 3 3 cortar papel de regalo 3209 3 >>>