Ce coup-ci, avec une analyse des données, placées dans les bonnes structures, la seconde partie de l'exercice va se faire immédiatement après la première.
Ici on a encore un truc assez simple, et on va faire un dictionnaire avec en clé le numéro de la partie et en valeur une liste de triplets (rouge, vert, bleu), avec des zéros là où on n'a pas d'infos en entrée.
-> Normaliser les entrées, avoir une structure assez facile à analyser ensuite.
Déjà, j'abuse des yields et des générateurs, c'est pas encore utile, mais ça va venir.
Pour la partie 1 on va avoir une fonction de validation, et après on fait une somme :
deftest_elements(elements,constraint):forelinelements:foriinrange(3):ifel[i]>constraint[i]:returnFalsereturnTrueconstraint=[12,13,14]r=sum(gameforgame,elementsindatasiftest_elements(elements,constraint))print(f"Possible games : {r}")
Et là, pour la seconde partie on n'a même plus besoin de fonction de validation, le calcul est immédiat, même si le code est moche. Y'aurait moyen avec des structures de données de numpy de se passer de certaines méthodes peu explicites avec directement des comparaisons de vecteurs, ou un produit vectoriel. Bah, pas encore, on reste en python chocolat, poire... Vanille !
power=sum(reduce(lambdax,y:x*y,[max(i)foriinzip(*elements)])forgame,elementsindatas)print(f"Sum of Power of games : {power}")
Le reduce sert à multiplier entre eux tous les éléments de la liste, et le zip va transformer une liste de triplets (r, v, b) en triplet de listes ([r, r, r...], [v, v, v...], [b, b, b...]).
Jusqu'ici, ya pas grand chose à déclarer, on manipule des données, on n'a même pas vraiment besoin de trop se compliquer à trouver les bonnes structures de données.
# Commencer à représenter le problème pas trop bêtement.
Posté par Yth (Mastodon) . En réponse au message Advent of Code 2023 : Day 2. Évalué à 2.
Ce coup-ci, avec une analyse des données, placées dans les bonnes structures, la seconde partie de l'exercice va se faire immédiatement après la première.
Ici on a encore un truc assez simple, et on va faire un dictionnaire avec en clé le numéro de la partie et en valeur une liste de triplets (rouge, vert, bleu), avec des zéros là où on n'a pas d'infos en entrée.
-> Normaliser les entrées, avoir une structure assez facile à analyser ensuite.
Déjà, j'abuse des yields et des générateurs, c'est pas encore utile, mais ça va venir.
Pour la partie 1 on va avoir une fonction de validation, et après on fait une somme :
Et là, pour la seconde partie on n'a même plus besoin de fonction de validation, le calcul est immédiat, même si le code est moche. Y'aurait moyen avec des structures de données de numpy de se passer de certaines méthodes peu explicites avec directement des comparaisons de vecteurs, ou un produit vectoriel. Bah, pas encore, on reste en python chocolat, poire... Vanille !
Le reduce sert à multiplier entre eux tous les éléments de la liste, et le zip va transformer une liste de triplets (r, v, b) en triplet de listes ([r, r, r...], [v, v, v...], [b, b, b...]).
Jusqu'ici, ya pas grand chose à déclarer, on manipule des données, on n'a même pas vraiment besoin de trop se compliquer à trouver les bonnes structures de données.