Tehtäväsi on toteuttaa luokka, jossa voi määritellä kursseja ja niiden välisiä esitietovaatimuksia sekä etsiä tavan suorittaa kurssit vaatimusten mukaisessa järjestyksessä.
Jos mahdollisia suoritustapoja on useita, mikä tahansa niistä hyväksytään.
Voit olettaa, että kursseja on enintään 50 ja luokan metodeita kutsutaan enintään 100 kertaa. Jokaisen kurssin nimi on merkkijono, jossa on enintään 10 merkkiä.
Python
Toteuta tiedostoon courseplan.py luokka CoursePlan, jossa on seuraavat metodit:
- konstruktori
 add_courselisää annetun nimisen kurssinadd_requisitelisää esitietovaatimuksenfindetsii jonkin tavan suorittaa kurssit ja palauttaa järjestyksen listana (jos mitään tapaa ei ole, metodi palauttaaNone)
class CoursePlan:
    def __init__(self):
        # TODO
    def add_course(self,course):
        # TODO
    def add_requisite(self,course1,course2):
        # TODO
    def find(self):
        # TODO
if __name__ == "__main__":
    c = CoursePlan()
    c.add_course("Ohpe")
    c.add_course("Ohja")
    c.add_course("Tira")
    c.add_course("Jym")
    c.add_requisite("Ohpe","Ohja")
    c.add_requisite("Ohja","Tira")
    c.add_requisite("Jym","Tira")
    print(c.find()) # [Ohpe,Jym,Ohja,Tira]
    c.add_requisite("Tira","Tira")
    print(c.find()) # None
Java
Toteuta tiedostoon CoursePlan.java luokka CoursePlan, jossa on seuraavat metodit:
addCourselisää annetun nimisen kurssinaddRequisitelisää esitietovaatimuksenfindetsii jonkin tavan suorittaa kurssit ja palauttaa järjestyksen listana (jos mitään tapaa ei ole, metodi palauttaanull)
import java.util.*;
public class CoursePlan {
    public void addCourse(String course) {
        // TODO
    }
    public void addRequisite(String course1, String course2) {
        // TODO
    }
    public ArrayList<String> find() {
        // TODO
    }
    public static void main(String[] args) {
        CoursePlan c = new CoursePlan();
        c.addCourse("Ohpe");
        c.addCourse("Ohja");
        c.addCourse("Tira");
        c.addCourse("Jym");
        c.addRequisite("Ohpe","Ohja");
        c.addRequisite("Ohja","Tira");
        c.addRequisite("Jym","Tira");
        System.out.println(c.find()); // [Ohpe,Jym,Ohja,Tira]
        c.addRequisite("Tira","Tira");
        System.out.println(c.find()); // null
    }
}
