-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel.py
38 lines (32 loc) · 1.26 KB
/
model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy as np
import config
class Course:
def __init__(self, courseId: int) -> None:
self.courseId = courseId
self.term = None
self.students = []
class Student:
def __init__(self, studentId: int, numOfCoursesForStudent) -> None:
self.studentId = studentId
self.courses = np.empty(numOfCoursesForStudent, dtype=object)
self.terms = np.empty_like(self.courses)
self.numOfCourses = numOfCoursesForStudent
self.numOfCollisionsForStudent = -1
self.numOfSameDayTerms = -1
def setTerms(self) -> None:
for i in range(self.numOfCourses):
self.terms[i] = self.courses[i].term
self.calculateNumOfCollisionsForStudent()
self.calculateNumOfSameDayTerms()
def calculateNumOfCollisionsForStudent(self) -> None:
collisions = self.numOfCourses - len(set(self.terms))
self.numOfCollisionsForStudent = collisions
def calculateNumOfSameDayTerms(self) -> None:
termsDays = set()
for t in self.terms:
termsDays.add(t.day)
self.numOfSameDayTerms = self.numOfCourses - len(termsDays)
class Term:
def __init__(self, termId) -> None:
self.termId = termId
self.day = termId // config.numOfTermsPerDay