On est sorti de notre Volcan, et maintenant on cherche les Elfes.
Pour ça on va hacker les données chiffrées dans le transmetteur pour trouver le fameux verger aux fruits étoilés.
Au menu : réordonner une liste cyclique en bougeant les éléments d'une certaine distance, plein de fois, avec des valeurs très grande.
Cyclique = modulo, ici il n'y a pas besoin de faire chauffer le CPU !
Cela dit, vu depuis combien de temps nos lutinelfes de Noël sont restés sans nous pour résoudre leurs problèmes, ça sent le carnage dès qu'on les auras retrouvés…
- Yth.
# Un bug que j'ai résolu sans jamais le trouver.
Posté par Yth (Mastodon) . Évalué à 3. Dernière modification le 20 décembre 2022 à 11:43.
J'ai codé ma propre liste chaînée, j'ai été intelligent avec mes modulos, j'ai une réponse sans ultra-optimiser en 4 secondes pour les données de test et les données réelles.
Et j'ai un bug.
Tout fonctionne au poil sur les données de test, les deux exercices, et les données réelles, mais pas le second sur données réelles !
Mauvais résultat.
Et j'ai beau triturer, je tombe toujours sur le mauvais résultat.
Alors j'ai recodé un peu différemment mes quelques lignes qui servent à déplacer un nombre dans la liste, je suis persuadé que fonctionnellement c'est identique, et ça fonctionne au super poil avec les données de test.
Mais je suis malade, ça explique peut-être.
En tout cas : résultat différent et correct cette fois-ci, avec un code un zest plus propre, mais à peine.
Sauf que dans le cas où le mouvement est de zéro, modulo, ben j'avais un effet de bord débile, je cassais ma liste…
Bref, ça aurait dû aller vite, mais pas.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Yth (Mastodon) . Évalué à 4.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Eric P. . Évalué à 3.
Pour moi, pas de modelisation en classes aujourd'hui.
Le truc qui m'a pris du temps c'est de realiser qu'il y avait plusieurs fois les memes valeurs dans les donnees reelles. J'ai resolu ca au plus vite en stockant une liste de tuples (valeur, rang d'apparition de cette valeur).
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Eric P. . Évalué à 4.
J'oubliais de dire, sans liste chainee, avec une liste python toute bete, ca prend une demi-seconde avec les donnees reelles.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Yth (Mastodon) . Évalué à 4. Dernière modification le 20 décembre 2022 à 15:02.
C'est tellement plus intelligent que ce que j'ai fait, je suis jaloux !
Je ne pensais pas que les listes seraient assez performantes, j'aurais dû essayer.
Bravo !
Tu peux pas faire ça plutôt ?
Tu t'en fous du nombre d'occurrence, ce que tu veux c'est que chaque élément de la liste soit unique.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Eric P. . Évalué à 2.
Tout-a-fait! C'est plus efficace comme tu le proposes et ca marche pareil.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Yth (Mastodon) . Évalué à 2. Dernière modification le 20 décembre 2022 à 15:18.
Faut aussi que 0 reste (0, 0), pour le retrouver à la fin.
Mais ça gagne 35% de temps :)
Bravo, j'admire la simplicité !
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
Joli, du coup j'ai honte de montrer ma solution avec liste chaînée maison. Mais je la montre quand même, allez :
À noter que c'est pas mal plus lent qu'avec des listes Python en fait… :-(
[^] # Re: Un bug que j'ai résolu sans jamais le trouver.
Posté par Yth (Mastodon) . Évalué à 2.
C'est clair, on fait de belles modélisations, alors que la solution d'Éric cartonne tout.
Possible que la liste chaînée devienne plus performante si on a des millions d'éléments, mais à 5000, on se fait laminer.
# il était vraiment null celui-ci
Posté par syj . Évalué à 2.
J'ai pris le problème du mauvais sens, il m'a fallut plus de 3h pour comprendre qu'il ne fallait pas appliquer la transformation 3000 fois pour avoir la réponse.
J'ai réecris 3 ou 4 fois mon code. J'ai commencé par un tableau avec des modulos au final, j'ai terminé par une liste doublement chainés comme quasiment tout le monde.
J'ai remis une bonne 1h30 pour caler le modulo pour éviter d'appliquer les millions de déplacement.
Bref, un très mauvaise journée. En plus, vous êtes plein à y être arrivé avant moins résultat.
Je n'ai plus aucun espoir de rafler la seconde place.
[^] # Re: il était vraiment null celui-ci
Posté par Eric P. . Évalué à 3.
Il faut voir le verre a moitie plein, si je regarde le leaderboard plus personne ne peut te rattraper et ta place sur le podium est garantie!
On est encore 8 actifs dans le leaderboard, donc en gros si j'ai bien compris les regles, on peut tu peux gagner au maximum 7 points par jour sur les autres, et il ne reste que 4 jours.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.