Как определить блокирующие пары в Python (распределение студентов)? - PullRequest
0 голосов
/ 04 ноября 2019

Как мы можем определить блокирующие пары в заданном задании учащихся и школ? У каждого учащегося есть свои предпочтения (нижний индекс столбца = более высокий уровень предпочтений), а у каждой школы есть определенная вместимость, а также список предпочтений учащихся (нижний индекс столбца = более высокий уровень). Наша цель - найти блокирующие пары и поместить их в список. Это код, который у нас есть, но мы не уверены, что он правильный.

#assignment
filename = 'assignment.txt'
assignment = [line.rstrip().split(' ') for line in open(filename)]

# the students and their list of ordered preferences
filename = 'preferences.txt'
preferences = [line.rstrip().split(' ') for line in open(filename)]

#the schools, their capacity and their priority list
filename = 'school_data.txt'
schooldata = [line.rstrip().split(' ') for line in open(filename)]

#i has been assigned no school or i prefers j over her school in A
#and j has free seat or i has higher priority at j than some student assigned to j in A

no school = False
iprefersj = False
freeseat = False
higherpriority = False
numberofseats = 0
blockingpair = []

#noschool
for student in range(0, len(preferences)-1):
     if student not in assignment:
            noschool = True

#iprefersschooljoverschoolk
     if preferences[student].index(schoolj) < preferences[student].index(schoolk)
            iprefersschooljoverschoolk = True

#number of seats and freeseat
     for school in preferences:
         for i in range(0, len(assignment)):
            if schooldata[school][1] = assignment[i][2]:
                numberofseats = numberofseats +1
        if numberofseats < schooldata[school][2]:
            freeseat = True 

#higherpriority
for school in range (0, len(schooldata)-1):
    for student1, student2 in range (0, len(preferences)-1):
        if schooldata[school].index(student1) < schooldata[school].index(student2)
           higherpriority = True

if (noschool or iprefersschooljoverschoolk) and (freeseat or higherpriority):
    blockingpair.append(assignment[student]) 
``` 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...