diff --git a/test/courses.py b/test/courses.py new file mode 100644 index 0000000..8c2bdfc --- /dev/null +++ b/test/courses.py @@ -0,0 +1,196 @@ +courses = { + "cl1": { + "name": "class1", + "code": "cl1", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl2": { + "name": "class2", + "code": "cl2", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl3": { + "name": "class3", + "code": "cl3", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl4": { + "name": "class4", + "code": "cl4", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl5": { + "name": "class5", + "code": "cl5", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl6": { + "name": "class6", + "code": "cl6", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl7": { + "name": "class7", + "code": "cl7", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl8": { + "name": "class8", + "code": "cl8", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl9": { + "name": "class9", + "code": "cl9", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl10": { + "name": "class10", + "code": "cl10", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl11": { + "name": "class11", + "code": "cl11", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl12": { + "name": "class12", + "code": "cl12", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl13": { + "name": "class13", + "code": "cl13", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl14": { + "name": "class14", + "code": "cl14", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl15": { + "name": "class15", + "code": "cl15", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl16": { + "name": "class16", + "code": "cl16", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl17": { + "name": "class17", + "code": "cl17", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl18": { + "name": "class18", + "code": "cl18", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl19": { + "name": "class19", + "code": "cl19", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl20": { + "name": "class20", + "code": "cl20", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl21": { + "name": "class21", + "code": "cl21", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl22": { + "name": "class22", + "code": "cl22", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl23": { + "name": "class23", + "code": "cl23", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + }, + "cl24": { + "name": "class24", + "code": "cl24", + "credits": 4, + "gradelevel": 11, + "totalrequests": 0, + "studentindexs": [] + } +} + +activeCourses = {} \ No newline at end of file diff --git a/test/test.py b/test/test.py new file mode 100644 index 0000000..563922f --- /dev/null +++ b/test/test.py @@ -0,0 +1,24 @@ +# myList = { +# "code1": { +# "name": "hello", +# "value": 3 +# }, +# "code2": { +# "name": "bye", +# "value": 1 +# } +# } + + +# if "code1" in myList: +# print(True) +# print(list(myList).index("code2")) + +myList = ["a","b","c","d","e","f","g","h","i","j"] +print(len(myList)) + +for i in range(len(myList)-2): # Subtract last 2 classes as they are alternatives + print() + +# Get first alternative +print(myList[len(myList)-2]) \ No newline at end of file diff --git a/test/tinker.py b/test/tinker.py new file mode 100644 index 0000000..9a08a72 --- /dev/null +++ b/test/tinker.py @@ -0,0 +1,132 @@ +#!/usr/bin/python3 +import random +from courses import courses, activeCourses + +''' + I will be using python to test and + develop course selection / schedule + generation + + this is honestly terrible code but + this is not an easy task for me to + do +''' + +''' +schedule example: +schedule: { + "semester1": { + "block1": "className", + "block2": "className", + "block3": "className", + "block4": "className" + }, + "semester2": { + "block1": "className", + "block2": "className", + "block3": "className", + "block4": "className" + } +} +''' + +''' +running example: +running: { + "semester1": { + "block1": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block2": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block3": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block4": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}} + }, + "semester2": { + "block1": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block2": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block3": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}, + "block4": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}} + ] +} +''' + +minReq, classCap, blockClassLimit = 18, 30, 15 +mockStudents = [] +running = [] + + +# Generate n students for mock data +def generateMockStudents(n): + for _ in range(n): + newStudent = { + "name": "someName", + "requests": [], + "schedule": {} + } + # Get list of random class choices with no repeats + # 8 primary choices, 2 secondary choices + courseSelection = random.sample(range(0, len(courses), 10)) + for courseNum in courseSelection: + newStudent["requests"] = courses[courseNum]["code"] + mockStudents.append(newStudent) + + +def generateSchedule(): + # Collect data and calculate schedules + for student in mockStudents: + # Tally class request + for request in student["requests"]: + courses[request]["totalrequests"] += 1 + courses[request]["studentindexes"].append(i) + # Add course to active list if enough requests + if courses[request]["totalRequests"] > minReq and courses[request] not in activeCourses: activeCourses.append(courses[request]) + + for student in mockStudents: + blockIndex = 0 + semesterIndex = 0 + for i in range(len(student["requests"])-2): # Subtract last 2 classes as they are alternatives + currentClass = student + if student["requests"][i] in activeCourses: + pass + elif student["requests"][i] not in activeCourses: + # Get first alternative + student["requests"][len(student["requests"])-2] + + # for course in courses: + # blockIndex = 0 + # semesterIndex = 0 + # if course["totalrequests"] > minReq: + # # Create course query + # q = { + # "name": course["name"], + # "remaining": classCap + # } + + # # Generate x amount of courses based on requests number + # for j in range(len(course["studentindexes"])): + # classRunCount = course["totalrequests"] % 30 + # if ((course["totalrequests"] / 30) - classRunCount) > minReq: + # pass + + # # Add one student to class + # q["remaining"] -= 1 + + # if q["remaining"] == 0 and (len(course["studentindexes"])-classCap) > minReq: + # if course["code"] in running[semesterIndex][blockIndex]: + # blockIndex += 1 + + # # courseIndex = list(running[semesterIndex][blockIndex]).index(course["code"]) + # running[semesterIndex][blockIndex][course["code"]] = q + + # mockStudents[i]["schedule"][f"semester{semesterIndex+1}"][f"block{blockIndex+1}"] = course["name"] + + # course["totalRequests"] -= minReq + # while True: + # if q in running["semester1"]["block1"]: + # running["semester1"][blockIndex][running["semester1"]["block1"].index(q)][] + # else: + # running["semester1"][blockIndex].append(q) + + # for studentIndex in course["studentindexs"]: + # if studentIndex == i: + # pass + +generateMockStudents(400) \ No newline at end of file