@@ -16,7 +16,6 @@ def main():
16
16
# did not set it as a number, use default value of 5
17
17
num_pairs = 5
18
18
19
-
20
19
# There are only 26 possible names for each sex
21
20
if num_pairs > 26 :
22
21
print ("You can't have more than 26 pairs." )
@@ -36,23 +35,27 @@ def main():
36
35
shuffle (woman .preference )
37
36
38
37
# Run the algorithm
39
- resolve (men , women )
38
+ stable_marriage (men , women )
40
39
41
40
# Print preferences and the result
41
+ print ('Preferences of the men:' )
42
42
for man in men :
43
- print (f" { man .name } : { ', ' .join ((p .name for p in man .preference ))} " )
43
+ print (f' { man .name } : { ", " .join ((p .name for p in man .preference ))} ' )
44
44
45
- print ('' )
45
+ print ()
46
46
47
+ print ('Preferences of the women:' )
47
48
for woman in women :
48
- print (f" { woman .name } : { ', ' .join ((p .name for p in woman .preference ))} " )
49
+ print (f' { woman .name } : { ", " .join ((p .name for p in woman .preference ))} ' )
49
50
50
51
print ('\n ' )
51
52
53
+ print ('The algorithm gave this solution:' )
52
54
for man in men :
53
55
print (f'{ man .name } + { man .partner .name } ' )
54
56
55
- def resolve (men , women ):
57
+
58
+ def stable_marriage (men , women ):
56
59
"""Finds pairs with stable marriages"""
57
60
58
61
while True :
@@ -120,21 +123,22 @@ def partner(self, person):
120
123
person as well"""
121
124
122
125
# Do nothing if nothing would change
123
- if person != self .partner :
126
+ if person != self ._partner :
124
127
# Remove self from current partner
125
- if self .partner is not None :
128
+ if self ._partner is not None :
126
129
self ._partner ._partner = None
127
130
128
131
# Set own and the other person's partner
129
132
self ._partner = person
130
- if self .partner is not None :
133
+ if self ._partner is not None :
131
134
self ._partner ._partner = self
132
135
133
- # This allows use of self.has_parnter instead of self.has_partner()
136
+ # This allows use of self.has_partner instead of self.has_partner()
134
137
@property
135
138
def has_partner (self ):
136
139
"""Determine whether this person currently has a partner or not."""
137
140
return self .partner is not None
138
141
142
+
139
143
if __name__ == '__main__' :
140
144
main ()
0 commit comments