Premier conseil pour ceux qui s'y mettent : testez vos programme avec les données de démo avant d'envoyer un résultat.
Les cas particuliers ne sont pas décrits dans les énoncés, mais sont souvent présents dans les données de test.
Par exemple, premier jour de 2023, second challenge ligne 2 : "eightwothree".
L'approche « facile » consiste à faire des remplacement de chaînes : "one" par "1", "two" par "2", etc.
Si on fait ça sans réfléchir et dans l'ordre, notre chaîne devient alors : "eigh23", et on a comme valeur 23.
Mais on devrait remplacer le début de la chaîne, "eight" par 8, et obtenir 83 comme résultat.
Une simple validation avec les données de test montre qu'on s'est planté...
Si ça sent le vécu, c'est parce que ça sent le vécu.
Second conseil, en Python, mais surtout utile à partir de la moitié en général : utilisez PyPy quand les algos commencent à boucler à mort et traiter des millions de cas, ça peut aller de 20 à 50 fois plus vite, sans rien changer au code.
Et abusez des générateurs, pour éviter les explosions de mémoire.
# J'y retourne !
Posté par Yth (Mastodon) . En réponse au journal Advent of code 2023. Évalué à 10.
Je remet ça cette année :)
Premier conseil pour ceux qui s'y mettent : testez vos programme avec les données de démo avant d'envoyer un résultat.
Les cas particuliers ne sont pas décrits dans les énoncés, mais sont souvent présents dans les données de test.
Par exemple, premier jour de 2023, second challenge ligne 2 : "eightwothree".
L'approche « facile » consiste à faire des remplacement de chaînes : "one" par "1", "two" par "2", etc.
Si on fait ça sans réfléchir et dans l'ordre, notre chaîne devient alors : "eigh23", et on a comme valeur 23.
Mais on devrait remplacer le début de la chaîne, "eight" par 8, et obtenir 83 comme résultat.
Une simple validation avec les données de test montre qu'on s'est planté...
Si ça sent le vécu, c'est parce que ça sent le vécu.
Second conseil, en Python, mais surtout utile à partir de la moitié en général : utilisez PyPy quand les algos commencent à boucler à mort et traiter des millions de cas, ça peut aller de 20 à 50 fois plus vite, sans rien changer au code.
Et abusez des générateurs, pour éviter les explosions de mémoire.