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_course
lisää annetun nimisen kurssinadd_requisite
lisää esitietovaatimuksenfind_order
palauttaa 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