Le premier d'une série de 25 forums qui proposeront de partager vos solutions pour l'édition 2023 de l'Advent of Code.
Vous pouvez vous inscrire à un leadboard privé que j'ai créé pour LinuxFR : 2423220-c94050af
Jour 1 (résumé) :
Partie 1
Les petits lutins vont vous envoyer voir où la production de neige a des problèmes, et utilisent pour cela un trébuchet.
Pour cela, ils ont besoin des valeurs de calibrations écrites dans un document qui a été « amélioré » par un jeune lutin.
Le document se présente ainsi :
1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet
Pour obtenir les valeurs de calibration, il suffit de combiner le premier et le dernier chiffre de chaque ligne pour obtenir un nombre à deux chiffres. Les valeurs qui correspondent à cet exemple sont 12,38,15,77. La solution est la somme de ses chiffres, soit 142.
Partie 2
C'était trop simple, en fait les chiffres écrits en lettre comptent aussi.
Par exemple :
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
Donne les valeurs 29,83,13,24,42,14,76, pour une somme de 281.
# Premier jour : on n'optimise pas, on fonce dans l'tas !
Posté par Yth (Mastodon) . Évalué à 2.
Le premier exercice est trivial :
On fait
python3 01.py < 01.input
ou01.demo
pour les données de test, et hop, résultat en une commande.Le second exercice sans optimisation consiste à rechercher les chiffres et les chiffres écrits, ajouter ça dans une liste, et faire pareil :
La fonction analyze prend une ligne, la parcours charactère par charactère, et regarde si c'est un chiffre, ou l'écriture d'un chiffre, et envoie dans l'itérateur.
Zéro intelligence, zéro optimisation, zéro plantage.
Bientôt on pourra plus faire comme ça !
Mais bon, jour 1, on se dérouille les neurones, on reprend le pli des traitements de flux, on essaie déjà de mettre des itérateurs plutôt que de tout traiter en mémoire, juste pour reprendre les futurs bonnes habitudes…
# Python
Posté par alberic89 🐧 . Évalué à 1.
Ma solution :
Après quelques essais en remplaçant avant de traiter, je me suis rendu compte que le plus simple était de reprendre intégralement la logique de la partie 1 en vérifiant une chaine plutôt qu'un nombre.
Et c'est plutôt propre.
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
[^] # Re: Python
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Et pour 0 et zéro ? (Nb : je n'ai pas essayé de faire l'exercice, je regardais juste les 2 réponses fournies ici et leurs différences)
[^] # Re: Python
Posté par Yth (Mastodon) . Évalué à 2.
"zero" n'est pas dans les données, mais l'ajouter chez moi permet d'avoir la correspondance entre les textes et les index de la liste Python qui commence à 0.
C'est une optimisation facile de lisibilité on va dire.
Par ailleurs, j'ai codé sans regarder les données justement, donc en fait je ne savais pas que le zéro était inutilisé.
Dans l'idée, il aurait pu l'être.
[^] # Re: Python
Posté par alberic89 🐧 . Évalué à 2.
J'ai vérifié avant et avait fais quelques tests dans la première partie, il n'y a pas de zéro. Et si c'était le cas, il suffirait d'ajouter une ligne au dictionnaire.
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.