s1Eva_IIT2017_T1 Taller de juguetes en polo norte

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
>>>