CSES - Kurssit 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:
  • add_course lisää annetun nimisen kurssin
  • add_requisite lisää esitietovaatimuksen
  • find etsii jonkin tavan suorittaa kurssit ja palauttaa järjestyksen listana (jos mitään tapaa ei ole, metodi palauttaa None)
class CoursePlan:
    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:
  • addCourse lisää annetun nimisen kurssin
  • addRequisite lisää esitietovaatimuksen
  • find etsii jonkin tavan suorittaa kurssit ja palauttaa järjestyksen listana (jos mitään tapaa ei ole, metodi palauttaa null)
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
    }
}