Tehtäväsi on toteuttaa tietorakenne, joka pitää yllä tehokkaasti työlistaa. Listalle voi lisätä uuden tehtävän, jolla on tietty nimi ja prioriteetti, sekä listalta voi hakea käsittelyyn suurimman prioriteetin tehtävän.
Voit olettaa, että työtehtävän nimi muodostuu merkeistä a
–z
ja 0
–9
ja prioriteetti on kokonaisluku välillä 0 \dots 10^9.
Python
Toteuta tiedostoon tasks.py
luokka Tasks
, jossa on seuraavat funktiot:
add
: lisää listalle työtehtävän, jolla on tietty nimi ja prioriteettinext
: poistaa listalta korkeimman prioriteetin työtehtävän ja antaa sen nimen (jos vaihtoehtoja on monta, valitaan aakkosjärjestyksessä ensimmäinen)
Kummankin funktion tulee toimia tehokkaasti.
class Tasks: def add(self, name, priority): # TODO def next(self): # TODO if __name__ == "__main__": t = Tasks() t.add("siivous",10) t.add("ulkoilu",50) t.add("opiskelu",50) print(t.next()) # opiskelu t.add("treffit",100) print(t.next()) # treffit print(t.next()) # ulkoilu
Java
Toteuta tiedostoon Tasks.java
luokka Tasks
, jossa on seuraavat metodit:
add
: lisää listalle työtehtävän, jolla on tietty nimi ja prioriteettinext
: poistaa listalta korkeimman prioriteetin työtehtävän ja antaa sen nimen (jos vaihtoehtoja on monta, valitaan aakkosjärjestyksessä ensimmäinen)
Kummankin metodin tulee toimia tehokkaasti.
public class Tasks { public void add(String name, int priority) { // TODO } public String next() { // TODO } public static void main(String[] args) { Tasks t = new Tasks(); t.add("siivous",10); t.add("ulkoilu",50); t.add("opiskelu",50); System.out.println(t.next()); // opiskelu t.add("treffit",100); System.out.println(t.next()); // treffit System.out.println(t.next()); // ulkoilu } }