Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. class StageBeheer:
  2. def __init__(self,st,b):
  3. self.st,self.b,self.N = st,b,len(st)
  4. def geldige_toekenning(self,woordenboek):
  5. for i in range(self.N):
  6. if i not in woordenboek.keys() or i not in woordenboek.values():
  7. return False
  8. return True
  9. def beste_bedrijf(self,rangnummer):
  10. voorkeuren = self.st[rangnummer]
  11. for i in range(self.N):
  12. if voorkeuren[i]==min(voorkeuren):
  13. return i
  14. def beste_student(self,rangnummer):
  15. voorkeuren = self.b[rangnummer]
  16. for i in range(self.N):
  17. if voorkeuren[i]==min(voorkeuren):
  18. return i
  19. def score_toekenning_bedrijf(self,woordenboek):
  20. if not self.geldige_toekenning(woordenboek):
  21. return -1
  22. return sum(self.b[bedrijf][student] for bedrijf,student in woordenboek.items())
  23. def score_toekenning_student(self,woordenboek):
  24. if not self.geldige_toekenning(woordenboek):
  25. return -1
  26. return sum(self.st[student][bedrijf] for bedrijf,student in woordenboek.items())
  27. def zoek_toekenning(self,toek):
  28. return toek.toekenning(self)
  29. class DefaultZoeker:
  30. def toekenning(self,beheer):
  31. return {i:i for i in range(beheer.N)}
  32. class GulzigBedrijfZoeker:
  33. def toekenning(self,beheer):
  34. woordenboek = {}
  35. for i in range(len(beheer.b)):
  36. w = {beheer.b[i][j]:j for j in range(beheer.N)}
  37. notfound = True
  38. j = 1
  39. while notfound:
  40. if w[j] not in woordenboek.values():
  41. woordenboek[i] = w[j]
  42. notfound = False
  43. else:
  44. j+=1
  45. return woordenboek
  46. class GulzigStudentZoeker:
  47. def toekenning(self,beheer):
  48. woordenboek = {}
  49. for i in range(len(beheer.st)):
  50. w = {beheer.st[i][j]:j for j in range(beheer.N)}
  51. notfound = True
  52. j = 1
  53. while notfound:
  54. if w[j] not in woordenboek.keys():
  55. woordenboek[w[j]] = i
  56. notfound = False
  57. else:
  58. j+=1
  59. return woordenboek
  60. class StabieleToekenningZoeker:
  61. def toekenning(self,beheer):
  62. te_doen = [i for i in range(beheer.N)]
  63. voorstellen = []
  64. w = {}
  65. while te_doen != []:
  66. bedrijf = min(te_doen)
  67. voorkeur_bedrijf = {beheer.b[bedrijf][j]:j for j in range(beheer.N) if (j,bedrijf) not in voorstellen}
  68. stu = voorkeur_bedrijf[min(voorkeur_bedrijf.keys())]
  69. voorkeur_student = {j:beheer.st[stu][j] for j in range(beheer.N)} ##voorkeur voor bedrijf j
  70. voorstellen.append((stu,bedrijf))
  71. if stu not in w.values():
  72. w[bedrijf] = stu
  73. else:
  74. conc = None
  75. for b,s in w.items():
  76. if s == stu:
  77. conc = b
  78. if voorkeur_student[bedrijf] < voorkeur_student[conc]:
  79. w[bedrijf] = stu
  80. del w[conc]
  81. te_doen = [i for i in range(beheer.N) if i not in w.keys()]
  82. return w
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement