Je hebt een processor die een bepaalde set aan taken moet uitvoeren. De processor kan slechts één taak tegelijk uitvoeren, en je wilt zo veel mogelijk taken uitvoeren voor hun gegeven deadline.
Schrijf een functie processor(taken) die dit op een gretige manier berekent.
Een lijst met taken die moeten uitgevoerd worden. Elke taak is een tupel (duur, deadline), waarbij duur het aantal tijdseenheden is dat de taak nodig heeft om uitgevoerd te worden, en deadline het tijdstip is waarop de taak klaar moet zijn.
Het aantal taken dat uitgevoerd kan worden voor hun deadline.
>>> processor([(2, 2), (1, 2)])
1
>>> processor([(2, 3), (1, 2)])
2
>>> processor([(3, 2)])
0
Je kan een lijst van tupels sorteren op hun eerste of tweede element als volgt:
taken.sort(key=lambda tup: tup[0]) # Sorteert op duur
taken.sort(key=lambda tup: tup[1]) # Sorteert op deadline
Je kan dit ook combineren met de reverse parameter om in omgekeerde volgorde te sorteren:
taken.sort(key=lambda tup: tup[0], reverse=True) # Sorteert op duur van lang naar kort
taken.sort(key=lambda tup: tup[1], reverse=True) # Sorteert op deadline van laat naar vroeg