Tehtäväsi on toteuttaa luokka, jonka avulla voi määritellä kurssien välisiä esitietovaatimuksia sekä etsiä tavan suorittaa kurssit vaatimusten mukaisessa järjestyksessä.
Esimerkki: Suoritettavana on neljä kurssia Jym, Ohpe, Ohja ja Tira. Esitietovaatimukset ovat:
- Ohpe tulee suorittaa ennen Ohjaa
- Ohja tulee suorittaa ennen Tiraa
- Jym tulee suorittaa ennen Tiraa
Tässä tapauksessa mahdolliset suoritusjärjestykset ovat:
- Jym, Ohpe, Ohja, Tira
- Ohpe, Jym, Ohja, Tira
- Ohpe, Ohja, Jym, Tira
Sinun riittää etsiä mikä tahansa kelvollinen suoritusjärjestys, eli yllä olevassa esimerkissä on kolme mahdollista suoritusjärjestystä.
Toteuta tiedostoon courseplan.py luokka CoursePlan, jossa on seuraavat metodit:
add_courselisää annetun nimisen kurssinadd_requisitelisää esitietovaatimuksenfind_orderpalauttaa listana jonkin tavan suorittaa kurssit vaatimusten mukaisesti
Metodi find_order voi palauttaa minkä tahansa vaatimusten mukaisen järjestyksen. Jos kursseja ei ole mahdollista suorittaa vaatimusten mukaisesti, metodin tulee palauttaa None.
class CoursePlan:
def __init__(self):
# TODO
def add_course(self, course):
# TODO
def add_requisite(self, course1, course2):
# TODO
def find_order(self):
# TODO
if __name__ == "__main__":
courses = CoursePlan()
courses.add_course("Ohpe")
courses.add_course("Ohja")
courses.add_course("Tira")
courses.add_course("Jym")
courses.add_requisite("Ohpe", "Ohja")
courses.add_requisite("Ohja", "Tira")
courses.add_requisite("Jym", "Tira")
print(courses.find_order()) # esim. [Ohpe, Jym, Ohja, Tira]
courses.add_requisite("Tira", "Tira")
print(courses.find_order()) # None
