07:03 <discord_afpy_> <lythari59> matin
07:03 <discord_afpy_> <lythari59> j'aime pas les maps et recherche de chemin ><
07:44 <entwanne> j'aime bien les maps mais j'aime pas ma solution pour la partie 2, c'est trop long, faudrait que je l'optimise
07:44 <alain_afpy> WARNING !!! YAKAFOKON DETECTED !!!!
07:54 <entwanne> exactement !
08:15 <debnet> Bonjour.
08:20 <debnet> Je comprends pas le déplacement du garde sur l'exemple: pourquoi il continue vers le bas alors que juste avant il avait un obstacle, il aurait pas du aller vers la gauche ?
08:20 <debnet> Ah non, c'est juste la grille de fin.
08:21 <debnet> C'était pas clair.
08:28 <discord_afpy_> <lythari59> entwanne : inutile de tenter les cases qui sont pas seen dans le parcours optimal. Faut ajouter des blocks que sur le chemin de base ^^.
08:28 <entwanne> Ah mais oui, pas con ^^
08:30 <discord_afpy_> <lythari59> (moi j'ajoutais que sur les # et il trouvait toujours une sortie mon garde, je l'ai appelé passe muraille, puis j'ai corrigé et je l'ai piégé).
08:33 <entwanne> Ouais au début je changeais les # et . et je comprenais pas pourquoi ça ne trouvait jamais de boucle sur l'exemple
08:40 <debnet> J'ai peur quand je vous lis. :D
08:57 <discord_afpy_> <lythari59> c'est une genre de secte, mais on est gentil.
09:00 <debnet> Vous avez bruteforce ou vous avez été intelligents ? xD
09:07 <discord_afpy_> <Andy K (boss dreamer ou pas)> Salut
09:07 <entwanne> brute-force à la base, ça passait en une dizaine de secondes sur ma machine, puis j'ai adapté la solution de lythari59 pour un truc un peu plus intelligent qui passe maintenant en quelques secondes
09:11 <debnet> Je suis en bruteforce à 5 secondes.
09:12 <debnet> Mais bon... j'imagine qu'il y a plus intelligent. xD
09:23 <discord_afpy_> <dancergraham> bruteforce tres bete pour moi jour 5 😄 Je revérifie l'ordre entiere a chaque boucle, aucune optim
09:24 <discord_afpy_> <dancergraham> 3,2s pour les deux parties sur un intl i7 vieux de 4 ans
09:51 <discord_afpy_> <lythari59> moi je dois être stupide, plus j'optimise et plus c'est lent xD.
09:53 <debnet> lythari59 ah ah j'ai le même soucis. :D
09:55 <debnet> Je vais assumer que je ne ferai pas mieux que 4 secondes. x)
09:56 <entwanne> je veux essayer une solution en posant le rocher manquant au fur et à mesure du parcours mais j'ai pas encore pris le temps de le faire
09:57 <entwanne> (ça optimiserait ma solution actuelle qui parcourt tout afin de trouver les positions possibles, puis reparcourt chaque possibilité jusqu'à trouver la bonne)
09:58 <debnet> Je fais ça aussi. xD
09:58 <discord_afpy_> <lythari59> oui et tu peux optimiser en disant
09:58 <discord_afpy_> <lythari59> "si je suis en train de monter et que j'ai aucun obstacle sur ma droite alors inutile de tester un obstacle au dessus de moi, continuons de monter".
09:59 <entwanne> euh oui je ne teste que les obstacles devant
09:59 <debnet> Il doit y avoir une subtilité mathématique qui se cache derrière ça, genre en comptant les intersections ou un truc dans le genre. x)
09:59 <discord_afpy_> <lythari59> moi je fais un parcours 1 qui résoud le chemin et renvoie toutes les cases visitées.
09:59 <discord_afpy_> <lythari59> et ensuite je teste en ajoutant dans ce set de cases visités 1 par 1.
09:59 <debnet> La même.
09:59 <entwanne> pareil
10:00 <entwanne> mais je veux tenter de faire les deux en même temps
10:05 <debnet> Aaah j'arrive à tomber sous la seconde.
10:05 <debnet> En ne gardant en mémoire que les endroits où je tourne.
10:05 <debnet> Plutôt que toutes les cases.
10:22 <discord_afpy_> <lythari59> moi je tombe à 6s
10:22 <discord_afpy_> <lythari59> mais ma machine doit pas être innocente.
10:22 <discord_afpy_> <lythari59> je veux bien tester une de vos solutions sur ma machine ^^.
10:23 <entwanne> la mienne (qui fait actuellement 6s sur ma machine, pas encore eu le temps d'optimiser) est en ligne
10:26 <debnet> Tu peux prendre la mienne aussi lythari59, dis moi si c'est plus rapide ou si mes 2 secondes viennent de mon i9. xD
10:27 <discord_afpy_> <lythari59> 6s celle d'entwanne sur mon poste
10:28 <discord_afpy_> <lythari59> yes debnet, mais je dois convertir ^^
10:28 <discord_afpy_> <lythari59> moi j'ai Windows, notepad++ et cmd.
10:29 <discord_afpy_> <lythari59> (je suis pas maso, juste mal outillé)
10:30 <discord_afpy_> <lythari59> 2.5s debnet : you win
10:31 <debnet> \o/
10:31 <discord_afpy_> <lythari59> mais moi j'ai fini avant vous et j'ai marqué plus de points et je vous ** et je rentre à ma maison
10:31 <debnet> Ca reste un bruteforce cependant.
10:31 <debnet> Je suis sûr qu'il y a une solution intelligente. x)
10:32 <discord_afpy_> <lythari59> mince je suis déjà chez moi. bah je vais retourner bosser ...
10:32 <discord_afpy_> <lythari59> gg encore
10:45 <discord_afpy_> <lythari59> t'as juste une map globale et tu te la trimballe pas, c'est pas mal pensé.
10:45 <discord_afpy_> <lythari59> pour le coup moi je teste beaucoup moins de cas dans le second exo et je suis quand même à la ramasse.
10:47 <discord_afpy_> <lythari59> "si je suis en train de monter et que j'ai aucun obstacle sur ma droite alors inutile de tester un obstacle au dessus de moi
10:47 <discord_afpy_> <lythari59> si je suis en train d'aller à droite et qu'il n'y a aucun obstacle en dessous de moi alors inutile de tester un obstacle à ma droite,
10:47 <discord_afpy_> <lythari59> ...".
10:47 <discord_afpy_> <lythari59>
10:47 <discord_afpy_> <lythari59> ces cas, je sais qu'ils vont avoir une solution, suffit de tourner à 90° et aller droit dehors donc je parcours pas le chemin.
10:50 <entwanne> là je descends sous les 2s avec l'optimisation que j'envisageais
10:50 <debnet> Oh?
10:51 <entwanne> mais maintenant j'ai du code dupliqué, faut que je nettoie
10:51 <alain_afpy> WARNING !!! YAKAFOKON DETECTED !!!!
10:51 <entwanne> mais maintenant j'ai du code dupliqué, faut que je nettoie!
10:51 <alain_afpy> WARNING !!! YAKAFOKON DETECTED !!!!
10:51 <entwanne> oui !
10:51 <entwanne> (mauvaise touche, oups)
10:51 <debnet> entwanne: T'as fait quoi comme optimisation ?
10:54 <entwanne> plutôt qu'avoir une première passe complète pour lister toutes les positions du chemin initial, puis ensuite tenter de placer les blocs à partir de cette liste, je place les blocs en même temps que j'itère
14:23 <mdk> matin
14:25 <mdk> Brute force en 8s, pas fier 🙁
14:27 <mdk> OK j'ai lu toutes vos discussion, et donc personne n'a été géné par la detection de boucle ? J'ai du me casser la tête pour rien encore 😀
14:31 <mdk> Haaaaaa `seen = {(x, y, dx, dy)}` bien
14:37 <mdk> Bon bah oui, on dirais que je me suis cassé la tête sur la detection de boucle, mais j'aime bien ma manière : https://git.afpy.org/mdk/aoc2024/src/commit/4e8e73d8b1b4428b06610fc06fbdc03e493aa45d/day6.py#L84 🙂
16:13 <debnet> @mdk Bizarrement j'avais une idée assez précise de comment détecter une boucle. ^^
16:15 <mdk> Voilà j'ai terminé la migration d'HackInScience chez Octopuce
16:15 <mdk> Il ne reste que makemake chez Gandi
16:15 <mdk> et les noms de domaine 😀
16:24 <debnet> Bravo !