On va faire encore un peu mieux et charger toutes les années précédentes dispos

This commit is contained in:
Benjamin Renard 2024-11-26 17:39:40 +01:00
parent cd673302eb
commit 118ad55a55

View file

@ -13,7 +13,7 @@ participants = [
'Charlotte', 'Charlotte',
'Nico', 'Nico',
'Didi', 'Didi',
'Johnny', # 'Johnny',
'Ben', 'Ben',
'Ludo', 'Ludo',
] ]
@ -22,19 +22,26 @@ on_evite = {
'Ben': 'Ludo', 'Ben': 'Ludo',
'Charlotte': 'Nico', 'Charlotte': 'Nico',
'Maman': 'Papa', 'Maman': 'Papa',
'Didi': 'Johnny', # 'Didi': 'Johnny',
} }
annees_passees = {}
# On charge le résultat de l'année dernière # On charge le résultat de l'année dernière
nom_fichier = sys.argv[1] if len(sys.argv) > 1 else f"{annee-1}.json" ancienne_annee = annee - 1
try: while True:
with open(nom_fichier, "r", encoding="utf-8") as fd: nom_fichier = f"{ancienne_annee}.json"
annee_passee = json.load(fd) try:
print(f"Résultat de l'an passée chargé depuis le fichier {nom_fichier} :") with open(nom_fichier, "r", encoding="utf-8") as fd:
print("\n".join([f"- {offre} => {recois}" for offre, recois in annee_passee.items()])) annee_passee = json.load(fd)
except FileNotFoundError: print(f"Résultat de l'année {ancienne_annee} chargé depuis le fichier {nom_fichier} :")
print(f"Échec de chargement du tirage de l'an passé depuis le fichier {nom_fichier}.") print("\n".join([f"- {offre} => {recois}" for offre, recois in annee_passee.items()]))
sys.exit(1) for offre, recois in annee_passee.items():
annees_passees[offre] = annees_passees.get(offre, []) + [recois]
ancienne_annee += -1
except FileNotFoundError:
print(f"Échec de chargement du tirage de l'an passé depuis le fichier {nom_fichier}.")
break
class EchecTirage(Exception): class EchecTirage(Exception):
pass pass
@ -62,8 +69,8 @@ def tirage(nb_tentatives_max=99):
# On évite entre couple # On évite entre couple
if on_evite.get(offre) == recois or on_evite.get(recois) == offre: if on_evite.get(offre) == recois or on_evite.get(recois) == offre:
continue continue
# On évite de faire comme l'an passée # On évite de faire comme les années passées
if annee_passee.get(offre) == recois: if recois in annees_passees.get(offre, []):
continue continue
# Trouvé ! # Trouvé !
result[offre] = recois result[offre] = recois
@ -82,7 +89,7 @@ while not result:
result = None result = None
# On affiche le résultat # On affiche le résultat
print("Résultat du tirage pour l'année {annee} :") print(f"Résultat du tirage pour l'année {annee} :")
for offre, recois in result.items(): for offre, recois in result.items():
print(f" - {offre} -> {recois}") print(f" - {offre} -> {recois}")
@ -91,3 +98,5 @@ nom_fichier = f"{annee}.json"
with open(nom_fichier, "w", encoding="utf-8") as fichier: with open(nom_fichier, "w", encoding="utf-8") as fichier:
fichier.write(json.dumps(result, indent=2, ensure_ascii=False)) fichier.write(json.dumps(result, indent=2, ensure_ascii=False))
print(f"Résultat enregistré dans le fichier {nom_fichier}.") print(f"Résultat enregistré dans le fichier {nom_fichier}.")
# vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab