CSES - Tehtävälista

Tehtäväsi on pitää yllä tehtävälistaa, johon voi lisätä tehtäviä. Jokaisella tehtävällä on nimi sekä prioriteetti, joka on kokonaisluku.

Tehtävälistalta voi hakea ja poistaa tehtävän, jonka prioriteetti on suurin. Jos suurimman prioriteetin tehtäviä on useita, niistä tulee valita aakkosjärjestyksessä ensimmäinen tehtävä.

Toteuta tiedostoon tasklist.py luokka Tasks, joka sisältää seuraavat metodit:

  • add_task(name, priority): lisää tehtävä listalle
  • fetch_task(): hae ja poista suurimman prioriteetin tehtävä

Kummankin metodin tulee toimia tehokkaasti myös silloin, kun listalla on suuri määrä tehtäviä.

class Tasks:
    def __init__(self):
        # TODO

    def add_task(self, name, priority):
        # TODO

    def fetch_task(self):
        # TODO

if __name__ == "__main__":
    tasks = Tasks()

    tasks.add_task("siivous", 20)
    tasks.add_task("koodaus", 90)
    tasks.add_task("treffit", 80)

    print(tasks.fetch_task()) # koodaus

    tasks.add_task("nukkuminen", 20)

    print(tasks.fetch_task()) # treffit
    print(tasks.fetch_task()) # nukkuminen