Implemented hogwarts

This commit is contained in:
Egor 2024-06-03 02:06:06 +03:00
parent 7d9db66ec7
commit d8ddcbdd21

View file

@ -2,6 +2,39 @@
package hogwarts
func GetCourseList(prereqs map[string][]string) []string {
return []string{}
import (
"log"
"slices"
)
func singleCourseList(
course string, prereqs map[string][]string, list []string, traversed []string,
) []string {
if slices.Contains(traversed, course) {
log.Panic("Recursive prereqs, aborting...")
}
traversed = append(traversed, course)
for _, prereqCourse := range prereqs[course] {
if !slices.Contains(list, prereqCourse) {
i := slices.Index(list, course)
if i == -1 {
list = append(list, prereqCourse)
} else {
list = slices.Insert(list, i, prereqCourse)
}
}
list = singleCourseList(prereqCourse, prereqs, list, traversed)
}
return list
}
func GetCourseList(prereqs map[string][]string) []string {
list := make([]string, 0)
for course := range prereqs {
if !slices.Contains(list, course) {
list = append(list, course)
}
list = singleCourseList(course, prereqs, list, []string{})
}
return list
}