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