{"net-splitcells-website-server-form-update":{"data-values":{"Definition":"maxCoursesPerHalfYear = 5;\nmaxCourseSize = 28;\nminCourseSize = 22;\noptCourseSize = 24;\ncoursesPerStudent = 4;\n\nassignedHalfYear = attribute(Integer, 'Assigned Half Year' );\nassignedSport = attribute(String , 'Assigned Sport' );\nassignedSportType = attribute(String , 'Assigned Sport Type');\nchosenSport = attribute(String , 'Chosen Sport' );\nchosenSportType = attribute(String , 'Chosen Sport Type' );\nisSecondaryChoice = attribute(Integer, 'Is Secondary Choice');\nstudent = attribute(String , 'Student' );\n\nstudentChoices = table('Student Choices', student, chosenSport, chosenSportType, isSecondaryChoice);\nstudentChoices . importCsvData('student-choices.csv');\navailableCourses = table('Available Courses', assignedSport, assignedSportType);\navailableCourses . importCsvData('available-courses.csv');\navailableHalfYears = table('Available Half Years', assignedHalfYear);\navailableHalfYears . importCsvData('available-half-years.csv');\n\ncourseAssignment = solution('Assignment of Students to Courses', studentChoices, availableCourses);\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(student)\n . then(hasSize(coursesPerStudent));\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . then (equals(chosenSportType, assignedSportType));\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(equals(assignedSportType, 'Team Sport'))\n . then(hasMinimumSize(1));\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(equals(assignedSportType, 'Individual Sport'))\n . then(hasMinimumSize(1));\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(assignedSport)\n . then(hasSize(1));\ncourseAssignment . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(student)\n . forEach(not(equals(chosenSport, assignedSport)))\n . then(hasSize(0));\n\ncourseScheduling = solution('Course Scheduling', courseAssignment, availableHalfYears);\ncourseScheduling . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(student, assignedHalfYear)\n . then(hasSize(1));\ncourseScheduling . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(assignedSport, assignedHalfYear)\n . then(hasMinimumSize(minCourseSize));\ncourseScheduling . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(assignedSport, assignedHalfYear)\n . then(hasSize(optCourseSize));\ncourseScheduling . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(assignedSport, assignedHalfYear)\n . then(hasMaximumSize(maxCourseSize));\ncourseScheduling . forEach(not(equals(assignedSport, 'Dummy Course')))\n . forEach(assignedHalfYear)\n . then(uniqueValueCountIsAtMost(maxCoursesPerHalfYear, assignedSport));\n","student-choices.csv":"Student,Chosen Sport, Chosen Sport Type, Is Secondary Choice\n","available-courses.csv":"Assigned Sport,Assigned Sport Type\n","available-half-years.csv":"Assigned Half Year\n"},"data-types":{"Definition":"text/markdown","student-choices.csv":"text/csv","available-courses.csv":"text/csv","available-half-years.csv":"text/csv"},"rendering-types":{"Definition":"plain-text","student-choices.csv":"plain-text","available-courses.csv":"plain-text","available-half-years.csv":"plain-text"}}}