Spaces:
Running
Running
| from typing import List, Dict, Set | |
| import pandas as pd | |
| # Load the Excel file | |
| file_path = 'data/DePaul-University-Courses.xlsx' | |
| df = pd.read_excel(file_path) | |
| # Display the first few rows to understand its structure | |
| df.head() | |
| # Simplified prerequisite parser | |
| # Assuming prerequisites are separated by commas for OR, and spaces for AND | |
| def parse_prerequisites(prerequisites: str) -> List[Set[str]]: | |
| if pd.isna(prerequisites): | |
| return [] | |
| # Splitting by commas first to handle OR conditions | |
| or_conditions = prerequisites.split(',') | |
| parsed = [set(and_condition.split()) for and_condition in or_conditions] | |
| return parsed | |
| # Create a mapping of courses to their parsed prerequisites | |
| course_prerequisites = {} | |
| for _, row in df.iterrows(): | |
| course_code = row['Course'] | |
| prerequisites = row['PREREQUISITES'] | |
| course_prerequisites[course_code] = parse_prerequisites(prerequisites) | |
| # Define a function to determine eligible courses | |
| def get_eligible_courses(passed_courses: List[str]) -> List[str]: | |
| eligible_courses = [] | |
| passed_set = set(passed_courses) | |
| for course, prerequisites in course_prerequisites.items(): | |
| if not prerequisites: # No prerequisites means the course is eligible | |
| eligible_courses.append(course) | |
| else: | |
| # Check if all OR conditions are met (at least one set of AND conditions) | |
| if any(all(prereq in passed_set for prereq in and_conditions) for and_conditions in prerequisites): | |
| eligible_courses.append(course) | |
| # Remove courses that the student has already passed | |
| return [course for course in eligible_courses if course not in passed_set] | |
| # Example usage | |
| passed_courses_example = ['CSC211', 'MAT130', 'SE450'] | |
| eligible_courses = get_eligible_courses(passed_courses_example) | |
| print(eligible_courses) | |