Ce jour-ci était globalement assez facile. Il suffisait de suivre ce qu'on nous disait.
Par contre, je n'ai pas vraiment trouvé de manière d'optimiser la solution de manière globale.
J'ai surtout fait des micro-optimisations comme:
- utiliser un tableau de taille 194 plutôt qu'une table de hash pour représenter les prix par quadruplet ainsi que les quadruplets déjà vu;
- utiliser les bons types d'entiers: u32 pour stocker les secrets, u16 pour stocker les prix et les différences.
- réutiliser le même tableau pour les quadruplets déjà vus entre chaque secret sans le réinitialiser en utilisant l'astuce d'affecter avec seen[index] = i et de tester si seen[index] == i où i est l'indice du secret qu'on est en train de traiter.
En parallélisant le tout, je suis arrivé à 1.7ms alors que j'étais à 70ms sur mon premier jet.
De souvenir, les 23èmes jours sont assez difficiles. Voyons voir ce que cela donne demain.
# 22ème jour
Posté par Guillaume.B . En réponse au journal Advent of code 2024. Évalué à 2.
Ce jour-ci était globalement assez facile. Il suffisait de suivre ce qu'on nous disait.
Par contre, je n'ai pas vraiment trouvé de manière d'optimiser la solution de manière globale.
J'ai surtout fait des micro-optimisations comme:
- utiliser un tableau de taille 194 plutôt qu'une table de hash pour représenter les prix par quadruplet ainsi que les quadruplets déjà vu;
- utiliser les bons types d'entiers: u32 pour stocker les secrets, u16 pour stocker les prix et les différences.
- réutiliser le même tableau pour les quadruplets déjà vus entre chaque secret sans le réinitialiser en utilisant l'astuce d'affecter avec
seen[index] = iet de tester siseen[index] == ioùiest l'indice du secret qu'on est en train de traiter.En parallélisant le tout, je suis arrivé à 1.7ms alors que j'étais à 70ms sur mon premier jet.
De souvenir, les 23èmes jours sont assez difficiles. Voyons voir ce que cela donne demain.