1 回答
TA贡献1821条经验 获得超4个赞
这个想法是,你遍历俘虏并将每个人分配到一个安全性等于或高于他们的危险的监狱,然后为了降低成本,他们被分配到安全性最低的监狱。
# -*- coding: utf-8 -*-
prisons = {'M': {1: {'prisonniers': [], 'sécurité': 90}, 2: {'prisonniers': [], 'sécurité': 55}, 3: {'prisonniers': [], 'sécurité': 17}}, 'F': {1: {'prisonniers': [], 'sécurité': 60}, 2: {'prisonniers': [], 'sécurité': 36}}, 'taille': 6}
captives = {'F': [{'nom': 'Wanda Maximoff', 'crimes': ['A conspiré avec Ultron', 'A agressé Vision', "A détruit l'aéroport de Vienne"], 'univers': 'Marvel', 'ID': 501988, 'danger': 45}], 'M': [{'nom': 'Le Joker', 'crimes': ['Meurtre', 'Braquage de banques', 'Mauvaises blagues'], 'univers': 'DC', 'ID': 48235, 'danger': 87}]}
for gender, captives in captives.items():
for captive in captives:
jails = filter(lambda elem: elem['sécurité'] >= captive['danger'],
prisons[gender].values())
if not jails:
print("No prison can hold:", captive['nom'])
continue
jail = min(jails, key=lambda elem: elem['sécurité'])
jail['prisonniers'].append(captive)
print(prisons)
印刷:
{'taille': 6, 'M': {1: {'prisonniers': [{'univers': 'DC', 'nom': 'Le Joker', 'crimes': ['Meurtre', 'Braquage de banques', 'Mauvaises blagues'], 'ID': 48235, 'danger': 87}], 'sécurité': 90}, 2: {'prisonniers': [], 'sécurité': 55}, 3: {'prisonniers': [], 'sécurité': 17}}, 'F': {1: {'prisonniers': [{'univers': 'Marvel', 'nom': 'Wanda Maximoff', 'crimes': ['A conspiré avec Ultron', 'A agressé Vision', "A détruit l'aéroport de Vienne"], 'ID': 501988, 'danger': 45}], 'sécurité': 60}, 2: {'prisonniers': [], 'sécurité': 36}}}
那就是危险87的小丑被分配到安全90的M1监狱。 危险45的万达马克西莫夫被分配到安全60的F1监狱。
添加回答
举报