Ejercicio: 1Eva2017TII_T1 Taller de juguetes en polo norte

Propuesta de solución en Python:
inicio = [678, 200, 240, 423, ...]
duracion = [300, 800, 456, 112, ...]
'pintar soldados'
Los tiempos para finalizar las tareas se obtienen como la suma de los tiempos de inicio mas los tiempos de duración.
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
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.
# 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
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.
Algoritmo 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
>>>