Me gustó el enfoque de Michael Levin. Aquí hay otra forma en que puede lograr la misma funcionalidad usando java Maps y memotization.
Suposición: tiene una lista de cursos y los cursos de requisitos previos de cada curso.
Cualquier adición adicional del curso de requisitos previos se manejará mediante programación.
- ¿Cuáles son las ventajas de usar la notación (0,1) en el sistema binario?
- ¿Qué es el algoritmo de transformación de Burrows-Wheeler y cómo se usa en aplicaciones del mundo real?
- ¿Me puede explicar qué es una estructura de datos?
- ¿Qué algoritmo usa YouTube para crear la lista de sugerencias de reproducción automática?
- ¿Dónde puedo encontrar una biblioteca de estructura de datos de gráficos dirigida, implementada en Javascript?
Grupos de interés:
Curso de clase {
cadena privada courseName;
List preRequisiteCourseList;
generar captadores;
public void updatePreRequisiteCourseList (Curso curso) {
this.getPreRequisiteCourseList (). add (curso);
}
}
Entrada de clase {
si input es un archivo, analice el archivo, cree una instancia de entrada y agréguelo a la lista.
si la fuente de datos, busca información de entrada, agrégala a la lista. Si hay alguna otra fuente, analícela y cree una instancia de entrada y agréguela a la lista.
}
curso CourseLoader {
mapa estático privado courseMap = new HashMap ();
estático{
// carga ansiosa si la lista de entrada del curso está disponible; de lo contrario no hay necesidad de llamar a esto.
loadCourseFrom (entrada);
}
Public static Map loadCourseFrom (inputList) {
para (cada entrada) {
if (courseMap .containsKey (input.getCourseName ()) {
courseMap .get (input.getCourseName ()). updatePreRequisiteCourseList (input.getCourse ());
}
courseMap .put (input.getCourseName (), input.getCourse ());
}
}
Conductor de clase {
// llame a esto si la lista de entrada cambia y está disponible en tiempo de ejecución.
CourseLoader.loadCourseFrom (entrada);
Curso curso = CourseLoader.getCoursesFor (courseName);
System.out.println (course.getPreRequisiteCourseList ());
}
Notas:
El curso de carga será un proceso único.
La obtención del curso de requisitos previos para un nombre de curso dado será constante.
PD: No compilé esto, pero el diseño seguramente será el mismo.