Chat:Fr/2020-05-14
Vry: Yop!
WhatTrickeryIsThis: yup
WhatTrickeryIsThis: Oh j'ai perdu 3 places cette nuit !
WhatTrickeryIsThis: je savais fallait pas dormir
BigUP: WhatTrickeryIsThis, ca va que 3 place,s t'aurais pu dormir 2 ou 3 nuits d'affilé
Neumann: Yo les nerds
egaetan: salut tout le monde
Spifflejedi: o/
Magus: ah bah je suis passé gold
Alshock: salut les enfants, les tortues, Automaton2000 et AutomatonNN
Magus: donc on peut être gold sans simuler l'ennemi et gérer le fow
Automaton2000: oui je vois que ça
[SG]Bisou: Magus tu te contentes d'optimiser ton ramassage de pellets?
tekki: yop
LoganWlv: #Magus quand tu dis sans gérer l'enemi, dans tes simus tu dois bien prendre en compte les pacs enemies non? SInon tu risques tu te faire tuer très souvent ?
LoganWlv: de te*
Alshock: il a pas dit sans gérer l'ennemi
Alshock: il a dit sans le simuler
tekki: laissez ce pauvre magus tranquille please
tekki: message venant d4AUtomatonNN :)
LoganWlv: #Alshock oui mais sans le simuler pour moi ça veut dire que tu ne simules pas les mouvements des enemies, donc les enemies restent tjrs à la même place ou n'existe carrément pas
tekki: yop AutomatonNN
tekki: les bots sont désactivés?
tekki: info AUtomaton2000
Automaton2000: il parle de quoi ?
YannDev: rip je suis retombé 323
tekki: salut YannDev
tekki: gg 323
YannDev: Coucou tekki
YannDev: bah non
tekki: ha bon :)
YannDev: j'étais top100 silver hier xD
tekki: fix it :)
YannDev: le pire c'est que j'éclatais tout le top10
tekki: AutomatonNN help him please
YannDev: mais je perds contre des gens nuls
YannDev: et je sais pas pourquoi
tekki: bah on verra bien
tekki: bon courage
YannDev: https://www.codingame.com/share-replay/463372131
YannDev: genre là je pige pas pourquoi je perds
YannDev: et si jamais je me mets contrele top2
YannDev: https://www.codingame.com/share-replay/463373450
LoganWlv: #YannDev Frame 11 ton pac id 1 peut faire un mouvement de 2 au lieu de 1
YannDev: Ah
YannDev: AH mais oui
YannDev: j'ai oublié de remettre ça
LoganWlv: Je sais pas si tu perds pour ça mais en tout cas ça peut s'amélioer :)
YannDev: ouaip
YannDev: merci beaucoup :)
YannDev: https://www.codingame.com/share-replay/463374913
stephdz: comment vous évitez de vous faire bouffer par un ennemi que vous ne voyez pas en arrivant à un carrefour ou en prenant un virage ?
YannDev: on est à égalité
YannDev: je n'évite pas
YannDev: je me fais bouffer
YannDev: :')
stephdz: ouais, j'ai beau tourner le pb dans tous les sens, je trouve pas de moyen !
stephdz: pourtant, ça doit bien représenter 80% de mes pacs morts !
tekki: prip
tekki: rip sorry
tekki: comme AUtomatonNN
tekki: je suis triste :(
tekki: Automaton2000 raconte-moi une histoire stp
Automaton2000: je dois rater un truc ...
tekki: explique -moi où est passé AUtomamtonNN stp
tekki: explique -moi où est passé AUtomamtonNN stp AUtomaton2000
Automaton2000: vu qu'on peut pas faire une ia qui marche bien
leojean890: stabilisation vers 208 dans la nuit on dirait bien
leojean890: gg Magus :p
WhatTrickeryIsThis: en rythme cardique?
WhatTrickeryIsThis: ah peu près oui
Alshock: est-ce qu'Automaton2000 vient de trash son frère alité dans le plus grand des calmes ?
Automaton2000: ok dans ce cas là ?
Alshock: non c'est pas ok <_>
leojean890: rythme cardiaque ?:P
tekki: non Automaton2000 :)
Automaton2000: c'est là que je me suis planté
Alshock: @leojean890 à 208 bpm t'as pas dû bien dormir
WhatTrickeryIsThis: il a toujours été plus mechant que son petit frere
Alshock: c'est grâce à nous ça
AdaoSwann: Petite question... vous sauriez pourquoi quand je fais text+= ' | ', il ne me rajoute que le '|' ? :/
Alshock: euh quel langage ?
leojean890: Alshock j'avoue :P j'étais pas sûr du sens de la blague de WTIT;)
Alshock: non ça met bien les espaces ça, c'est ptêtre le referee qui trim ?
Alshock: tu le check où ?
AdaoSwann: je fais ça sur l'IDE du Spring Challenge
AdaoSwann: mais du coup ça considère que c'est pas bon:/
Alshock: non mon mien a bien ses espaces, t'as pas une autre ligne qui ajoute des '|' quelque part ?
Alshock: Ah non pas bon c'est pas ça
Alshock: fais voir ton output complet
AdaoSwann: Ah attends. Sortie Standard c'est bien mon output à moi??
AdaoSwann: Je suis nouveau sur ce site
Alshock: celle de ta couleur oui
AdaoSwann: Sortie standard : http://chat.codingame.com/pastebin/84077015-bb4e-48ad-9d42-4bc3d7e8a7b2
Alshock: ah ah les paste sont à nouveau bugués
Alshock: envoie directement le replay
Alshock: t'as un bouton replay and share sous le display
AdaoSwann: https://www.codingame.com/replay/463378780
AdaoSwann: Si je me suis pas planté
Magus: LoganWiv : je répond en retard, mais oui quand je dis que je simule pas l'adveraire c'est qu'il se déplace pas
Magus: mes pacs essaient de les tuer parfois, mais c'est bidon vu que dans ma simu j'essaie de tuer un adversaire qui bouge pas et qui switch pas
Magus: suffit de regarder mes replays pour voir comment mes pacs meurent
Zanbez: J'ose plus touché mon code. Je suis resté hier soir à 80 places du boss silver . Ce matin 250 gold et maintenant je suis 180 sans rien faire. J'ai une IA gonflée à l'hélium !
Valbou: Salut à tous ! Quelqu'un a testé un algo type CSP ou Agent fondé sur les connaissances ?$
Alshock: pardon j'étais à côté, oui AdaoSwann la sortie standard avec des pipes collées c'est celle du boss
Alshock: la tienne crash avant
tekki: salut Magus, alors t'es motivé pour ce contest?
AdaoSwann: Reste à trouver pourquoi
Zanbez: #168 à ce rythme je suis dans le top 100 dans moins d'une heure
LoganWlv: #Magus compris ty
alexandreb09: Salut tout le monde, quelqu'un peut m'aider sur le probleme "Winamax Sponsored Contest" ?
Magus: tekki: a moitié. Disons que la je dois avoir presque tout codé en dehors du FoW
Magus: mais que j'ai aucune idée qui me motive à coder quoi que ce soit pour ça
BigUP: 225eme silver... a ce rythme, je suis encore en silver dans 2 jours
Magus: donc si ça se trouve je resterais la où je suis, faute d'idée
Magus: mais au moins, si vous vous posez la question
tekki: c quoi le FoW?
Magus: c'est possible de passer gold sans faire bouger l'ennemi et gérer le fow dans votre code :D
Magus: Fog Of War
tekki: allez je mise sur toi
tekki: bonne chance dude :)
tekki: Automaton2000 un conseil?
Automaton2000: je savais que je pouvais compter sur toi
tekki: merci AUtomaton2000, une petite chanson?
Automaton2000: je devais avoir un bug ...
YannDev: rip BigUp
Vry: Magus, j'ai l'impression que oui ... T1024 avait l'air de fonctionner comme ça.
Vry: En tout cas, il avait un super farming
Vry: Ah Magus, ce n'était pas une question en fait !!!
Vry: gg
YannDev: Vry t'es encore Silver :'(
YannDev: on est tous bloqués :/
Vry: C'est en effet ce que je me disais, faire la simu. mais sans "resolveMovement" dans un premier temps (vu que je n'ai pas le temps).
thoip: Quand il y a le timeout dans l'ide, Cela doit pas afficher les logs d'erreur après?
Vry: YannDev : c'est bon bot Wood2 pimpé pour passer Silver ...
YannDev: idem...
Magus: Vry: ah non moi j'ai codé le moteur hein
YannDev: mais je bats le #2
YannDev: en fait je bats tout le top10
Magus: je simule les mouvements comme je le fais le referee
Magus: ah je pense que c'est overkill, parce que dans 90% des tours que tu simules, y'a jamais plus d'une collision
Vry: Magus, ok tu utilises quand même les collisions pour tes pacs au final
Magus: je penes que le 2ème tour pour checker les collisions sert à rien
thoip: quelqu'un sait en cas de timeout si les logs d'erreur doivent s'aficher aorès le timeout?
WhatTrickeryIsThis: haha mes derniers matchs
Vry: Parce que au final le moteur c'est juste un gestionnaire de collisions quand on y regarde de plus prêt ...
Vintarel: thoip : si tu as flush ça doit s'afficher oui. Mais faut flush
YannDev: https://www.codingame.com/share-replay/463397706...
YannDev: je bats le premier de silver
YannDev: mais où est la logique de ce board
leojean890: et sur 10 matchs tu le bats combien de fois sur 10 ?;P
Vry: YannDev : pour passer il faut clairement être au dessus d'une majorité de bot ...
YannDev: je vais faire d'autres matchs
Magus: le système ELO c'est simple : tu as >50% de victoires contre ceux en dessous de toi, et <50% de victoires contre ceux au dessus toi
YannDev: ah
Magus: si tu bats le premier silver mais que le 2ème silver te met un 100% de victoire, tu seras pas premier silver
YannDev: rip
YannDev: bon j'ai fix le move perdu quand je speed
YannDev: ça a pas l'air incroyable
YannDev: ah si en fait
YannDev: c'est pas mal
leojean890: ouais c'est un score moyen quoi
thoip: Vintarel donc normalement sans flush dans les informations de jeu cela ne devrait pas s'afficher c'est bien ça?
leojean890: et parfois un bot est fort contre un joueur et faible contre un moins bien classé
YannDev: oui ça ça m'énerve
YannDev: je perds contre des #350
leojean890: ptet que tu gères bien certains aspects et moins bien d'autres aspects du problème ?
YannDev: https://www.codingame.com/share-replay/463399836
YannDev: là je comprends pas la raison de ma défaite
YannDev: si quelqu'un pouvait m'expliquer svp
ThomasNicoullaud: c'est pourtant simple
ThomasNicoullaud: les mouvements de tes pacs ne sont pas rentables
ThomasNicoullaud: end game tes pacs ne ramassent rien
Vintarel: Thoip oui
leojean890: garde une liste de places non visitées (non vues) pour y aller également
leojean890: garde une liste des pellets que tu avais vus par le passé mais que tu ne vois pas à l'instant
leojean890: pour potentiellement retourner voir s'ils y sont encore
leojean890: et après tu peux faire des hypothèses concernant l'emplacement de l'ennemi
leojean890: et les pellets qu'il a mangés, pour ne pas y aller
piw4i: hello
YannDev: j'ai déjà ça...
leojean890: hello
leojean890: faut ptet changer les priorités et la façon d'y aller, si ton bot ne bouge pas assez en late game
Neumann: ThomasNicoullaud: il s'appelle comment ton smurf ?
piw4i: petite question, quand on est sur la case précedent la fin d'un couloir, on peut pas utiliser speed pour aller prendre une pastille au fond et revenir en un seul tour vu qu'il n'y a qu'un seul move par tour?
leojean890: ThomasNicoullaud il veut pas submit s'il n'est pas dans le top 15;)
leojean890: cf OOC il a mis 2 semaines:p
Neumann: piw4i: en effet, avec une seule target dans ta commande, le referee aura du mal à savoir que tu veux faire un aller-retour :D
piw4i: oui :D
leojean890: le temps de bien tout finir et tester unitairement
piw4i: non mais en regardant un replay, je comprenais pas pkoi le score de l'adversaire augmentait plus vite au début
Magus: parce qu'il prend plus de pastille ?
piw4i: jusqu'a ce que je réalise que meme en mode speed je ne donnais des ordres que pour bouger case par case -_-
piw4i: du coup le speed sert pas a grand chose...
piw4i: ce qui m'a amené cette reflexion sur les fond de couloir
lumpy: Salut tout le monde
lumpy: Bon c'est pas très glorieux ce que je vais dire, mais j'ai réussi à aller au delas des 200 tours de jeu, c'est normal ?
egaetan: tours != frame
lumpy: ha, bha oui alors ^^ merci de la notif :p
egaetan: de rien ;)
ThomasNicoullaud: Neumann il est peut etre devant toi ? :D
Neumann: T'es le pire des pleutres
Neumann: Même moi j'ai sorti mon main
ThomasNicoullaud: j'ai vu
ThomasNicoullaud: je push demain
ThomasNicoullaud: je suis en congés j'aurais letemps d'avoir qq chose de solide
ThomasNicoullaud: mais la legend ca risque d'être dur cette fois
Neumann: Peudoki ou sullyper, 100%
ThomasNicoullaud: tu ne trouveras pas :)
Neumann: J'ai déja trouvé
ThomasNicoullaud: et tu me surestimes
bcourtine: Bonjour.
bcourtine: N'y aurait-il pas un petit problème d'infra en ce moment sur le challenge ?
PhilippeBuch: est il possible de debug dans l'ide?
bcourtine: Je gagne (ou perds) tous mes duels par timeout.
bcourtine: Tout dépend de ce que tu appelles "debug".
AdaoSwann: http://chat.codingame.com/pastebin/45d7301a-a1a4-4880-bcfb-034f83e93904
bcourtine: Breakpoint, non, mais affichage non pris en compte oui : en écrivant sur la sortie d'erreur.
AdaoSwann: petite question: l'utilisation de cette formule
AdaoSwann: devrait donner les coordonnées de la pastille la plus proche non ?
AdaoSwann: https://astucesweb.fr/education/formule-dist.png
bcourtine: Oui (si on oublie qu'on peut passer de droite à gauche et de haut en bas)
towzeur: en theorie oui ca te donne la pastille la plus proche en vol d'oiseau
k4ng0u: la tu bouges de cases en cases et il y a des murs
bcourtine: Et si on ne prend pas en compte les murs aussi ^^
AdaoSwann: merci mais j'utilise cette formule mais à chaque fois les pacs se dirigent vers les grosses pastilles
b0n5a1: PhilippeBuch vu que t'as l'air d'être en JS : console.error dans l'IDE pour voir ce ue tu veux
b0n5a1: o/
Alshock: @AdaoSwann tu devrais pas utiliser une distance euclidienne, tu ne te déplaces que verticalement ou horizontalement donc une distance de manhattan fait plus sens
AdaoSwann: une distance de manhattan ? je regarde ça merci
Alshock: @AdaoSwann et si tu veux prendre en compte les tunnels il faut prendre min(dx, width - dx) sur l'axe x
b0n5a1: Mouais...mais il est en bronze, Manhattan ne le fera plus trop monter ^^
b0n5a1: ou très peu
Alshock: en effet
Alshock: enfin quoique, ça évitera peut-être quelques situations de blocage j'en sais rien j'avoue
b0n5a1: AdaoSwann : floodfill ou breadth first search ça te permettra d'avoir une distance correcte
k4ng0u: Alshock pour une distance exacte le mieux c'est sans doute faire un parcours en largeur en prenant en compte les murs.
k4ng0u: https://fr.wikipedia.org/wiki/Algorithme_de_parcours_en_largeur
Alshock: je sais bien
Alshock: mais c'est quand même le niveau au dessus pour les gens qui commencent en algo
k4ng0u: t'as le pseudo code sur wikipedia :P
AdaoSwann: J'ai utilisé la distance de Manathan, mais les pacs ne prennet pas du tout les plus proches. Honnêtement je comprends pas
AdaoSwann: oops j'avais pas vu qu'il y avait des nouveaux messages je lis ça
Zanbez: Faut prendre les murs en compte.
AdaoSwann: Oui mais même sans compter les murs, si il y a une pastille à côté de lui parfois il va au total opposé en chercher une autre parce que c'est une grosse
AdaoSwann: alors que j'ai jamais pris en compte la valeur pour mon algo
b0n5a1: tu prends bien la valeur absolue dans ton manhattan au moins ? Parce que si la procher est à 3 et l'éloignée à -10 il va aller chercher l'éloignée...
AdaoSwann: oui oui j'ai pris les absolus
b0n5a1: abs(dx) + abs(dy)
b0n5a1: pas abs de (dx+dy)
AdaoSwann: abs(x_n-X) + abs(y_n-Y)
VilBoub: Attention... "à côté visible" ou "à côté mais cachée par un mur" ?
AdaoSwann: genre il est en 0,0
AdaoSwann: la pastille est en 0,1
VilBoub: t'as bien enregisté toutes les infos avant de les traiter ? tu ne peux pas les traiter en direct
k4ng0u: tu vises bien la pastille avec la distance min et tu traite ca pac par pac en resettant a chaque fois que tu traite un nouveau pac?
thoip: PhilippeBuch à l ancienne en mettant des logs sur les coordonness qui t'interessent.
AdaoSwann: non je n'avais pas traité, j'avais fait un if avec 1 distance calculé avec les abs en direct de chaque côté
AdaoSwann: ensuite. oui c'est reset à chaque pac
AdaoSwann: mais même au tout premier pac ça déconne
egaetan: Comment ça se passe les collisions avec speed ?
Stilgart: dans le referee :(
egaetan: si on collisione sur le premier move, on reessaie sur le deuxieme ?
AdaoSwann: genre là: https://www.codingame.com/share-replay/463437864
egaetan: merci Stilgart
egaetan: :p
Stilgart: sérieusement, j'ai "relire le referee" en haut de ma todo list tellement ça semble bizarrement codé
AdaoSwann: 1er coup : pac 0 en 12/11, il va en 19/11
AdaoSwann: alors qu'il y a une pastille en 13/11
Sylions: hello :) je me disais quand tu es en speed tu pers une occasion de voir si les pellets sont toujours là, non ?
VilBoub: oui
Sylions: c'est chaud ça...
b0n5a1: AdaoSwann le pac dont tu parles est celui de l(adversaire pas le tien
Sylions: je comprenais pas pourquoi mes pacs en fin de partie revenaient à un endroit alors qu'ils étaient passés devant u_u
b0n5a1: le tien est en 20/11 et aller en 19/11 est donc ok
b0n5a1: t'as les rouges sur ce replay pas les bleus AdaoSwann
tblancbeyne: Bonjour, est-ce que les pacs voient à travers les tunnels ?
b0n5a1: oui
tblancbeyne: Ok merci :)
AdaoSwann: Ah oui désolé je suis aveugle x)
leojean890: #185 bah dis donc ça monte seul ça change de d'habitude ;p
Samsa: contrairement à hier à l'ouverture de gold ?
Fangel: ça monte mieux quand t améliore ton bot quand même :)
Samsa: plus facile à dire qu'à faire
leojean890: hier j'avais pushé à 140 et il est tombé 201 quand ils ont cut à 200 par ex...
leojean890: ensuite je suis passé de 0.09 du boss à 1 pt puis qqn d'autre m'a poussé dans le bon sens
leojean890: donc passé gold, ensuite j'ai tenté des versions qui me mettaient tout en bas de gold
Samsa: j'ai suivi je push à ce moment
Samsa: je suis passé à +2.5 pour finir mon push à -0.1
leojean890: et là ma version monte..
Samsa: *j'ai
leojean890: je vois
leojean890: t'as choisi la solution de pusher pour passer au lieu de te faire pousser ?
Samsa: je fais partie des personnes qui on joué sur ton passage (mais je sias pas si j'ai aidé)
leojean890: d'accord
leojean890: igolus m'a bien aidé
leojean890: pendant son push il baissait le boss et me montait
Samsa: j'était 13eme je sais pas si j'aurais du ou non mais je l'ai fait
leojean890: c'est tjr la grande question
leojean890: ouais Fangel améliorer le bot c'est mieux effectivement :P gg pour ta place de #27 d'ailleurs ^^
Samsa: et le premier push j'ai galéré contre top 400 pour finir vers 200 ...
leojean890: ouais je vois
leojean890: parfois il y a des bots qui nous counter
Samsa: Après quelques tentatives sur les magic numbers j'ai fait un bon push où j'ai dépassé le boss à seulement 5% (pour finir juste en dessous de lui)
leojean890: quand gold n'était pas ouverte j'avais juste une règle : "si plus de 3 matchs perdus sur les 10 premiers, je relance"
Fangel: ben j ai passé 3 jours à reculer pour développer une gross feature
leojean890: et "si je finis en dessous de 200 c'est que ma version est mauvaise, donc je dois changer un paam"
leojean890: param
Monsieur_Y: (je suis en bois1) comment vous gérez vos différents pacs ? j'avais l'idée pour chaque pacs de calculer la distance pour chaque pellets de la map
Fangel: je suis passer de la place 30 à la place 30 de la ligue suivante :)
leojean890: enfin même en dessous de 150
leojean890: Fangel je t'ai vu 40eme genre hier ou avant hier ?:P
leojean890: mais je vois t'as fait un truc cool quoi:p
Fangel: j'ai été 6ème il y a 4 jours :)
leojean890: enfin t'avais déjà de bons classements je veux dire :P
leojean890: du coup tu laissais ton bot reposer en silver le temps de faire ta feature ?:P
leojean890: mais ouais ma règle c'était genre il y a 3 jours "si mon bot arrive pas dans le top 100, mauvaise version", et petit à petit mon seuil d'acceptation a baissé :P
leojean890: hier 140 j'étais content :P
leojean890: car j'arrivais pas à améliorer +
leojean890: mais bon j'ai tjr qq idées sous le coude :P
Fangel: le problème quand tu fais ça, c est que tu ne fais que bricoler les superparamètres
Fangel: parfois pour passer au niveau supérieur t as besoin de bien repasser l architecture
leojean890: j'ai ajouté genre 10 features en 2 3 jours en plus :P
leojean890: j'ai plein d'idées :P
leojean890: mais bon de là à les faire "bien" c une autre histoire :p
leojean890: bricoler les magic numbers ça fait partie de mes tests aussi of course :P
leojean890: kmeans de positions de pellets, voronoi sur mes pacs, algorithme hongrois ..:p
leojean890: j'ai même commencé à refaire en java pour pouvoir faire du hill climbing avec simus aléatoires à depth plus élevée (idée pas de moi^^):P
leojean890: mais on verra si je concrétise, mais ça peut se tester
Fangel: mais ce contest demande enormement de boulot par rapport aux précédent
Mazelcop: carrément
leojean890: moins que OOC right ?:P
leojean890: mais c'était sur 1 mois
leojean890: mais tout ce qui est localisation de l'adv est compliqué ici
leojean890: surtout gérer des probas de présence
leojean890: j'ai bidouillé des trucs
Andry_: qui est en période d'exam ?
Fangel: Pour moi sans le brouillard de guerre, ça aurait été le même volume de travail que les contest classiques.
leojean890: le FOG il y en a eu sur UTG, OOC et mtn PAC
leojean890: enfin UTG c'est les pièges
Fangel: oui mais sur UTG et OOC, le jeu est basé sur le fog... Ici, il pourrait très bien ne pas y en avoir.
leojean890: CG en met plus qu'avant (même si OOC c'est pas de CG), d'ailleurs Magus trouvait que c'était pas forcément une bonne idée :P
leojean890: ouais ici ça pourrait
Magus: OOC le jeu est basé sur le fog, sans ça il n'a aucun intérêt
leojean890: mais CG se disent que sans FOG ce serait trop facile avec des algos de recherche j'imagine ?
leojean890: ouais clair OOC c'est totalement basé dessus
Mazelcop: sans fog il y aurait un gros risque d'avoir égalité 90% du temps sur ce jeu
leojean890: mais là y'a quelques difficultésen plus du fog, notamment le facteur de branchement
Magus: je connais pas les décisions de CG la dessus. Le fog c'est pas très casual friendly (surtout dans la façon dont c'est donné en input sur ce jeu).
Magus: on le sait déjà depuis longtemps que tout ce qui embête les simus embête aussi les heuristiques. Donc le fog aide personne.
Magus: Mais pour ce jeu je suppose que dans le fog effectivement on aurait très souvent des égalités
Magus: et utiliser son speed serait trop dangereux
Alshock: Je... je viens de perdre une demi-heure parce que mon affichage utilisait un ternaire non-parenthésé
Magus: vu que t'as 10 secondes de cooldown, un PAC peut arriver de l'autre bout de la map pour te buter :D
JBM: ca n'arriverait pas dans un langage sans ternaire!
BigUP: ca va, le fog, ca met un peu d'inconnu dans le jeu
Daher: c'est quoi le but du challenge pacman?
leojean890: j'avoue ça peut être risqué
Alshock: JBM mon IA est en python actuellement et je migre vers C++ xD je veux creuser un trou au fond de la fosse des parianne et y passer le restant de mes jours
BigUP: c'est mon IA qui est dans le Fog !
Alshock: mais j'ai des doutes sur la qualité d'internet là-bas
leojean890: et ouais il y aurait des égalités
leojean890: entre algos de recherche optimisés
leojean890: en C pur
leojean890: :p
Alshock: Surtout sans le speed on n'aurait aucun intérêt au shifumi
Alshock: sans le fog pardon
leojean890: un peu comme STC, hypersonic, UTTT, tu vois dans le top quasiment que des langages très rapides
Vintarel: ça aurait été sympa de voir l'état du fog dans le combat
BigUP: mon IA est de plus en plus a la ramasse sans rien touchre
leojean890: #174
leojean890: sachant que quand j'ai submit ce code j'étais #240..
leojean890: hier soir
leojean890: si ça continue dans ce sens là je veux bien
leojean890: :p
leojean890: rien de certain of course :P
leojean890: Alshock clair ça ajoute du piment, FOG + shifumi
leojean890: les strats vicieuses;)
BigUP: va falloir que je sorte un hunter mode a mon IA
BigUP: genre attaque massive
BigUP: chasse au Pac !
leojean890: ce jeu c'est une sorte de UTG en fait, avec strats vicieuses et farm, et trouver un compromis entre les 2
BigUP: ca va etre plutot Double Hulk pour moi
leojean890: et la défense associée of course
Fangel: Je crois que vous vous trompez en croyant que sans le fog, ce jeu finirait en égalité...
leojean890: à voir
egaetan: hypersonic, il n'y avait pas tant que ça d'egalite
leojean890: je le citais dans le sens où les perfs du code sont primordiales
leojean890: mais ouais après certains le font mieux que d'autres
leojean890: ici ce serait la même j'imagine
leojean890: y'a les perfs + la gestion de l'autre + l'éval ..
leojean890: y'a forcément des gens qui vont se démarquer + que d'autres :p
Fangel: et puis la gestion du fog est important ici mais pas primordiale
Fangel: pour l instant je traque pas du tout l autre moi
leojean890: t'as surtout bossé la strat de farm ?
Mazelcop: tu esquives même pas les traps de l'ennemi ?
leojean890: et défense j'imagine
leojean890: la défense et le farm sont plus importants que d'être agressif :P mais être agressif si c'est bien fait ça peut bien améliorer le bot aussi
Fangel: les traps ?
leojean890: attendre l'autre dans un coin
Fangel: euh oui j ai surtout bossé le farm
Fangel: ah y en a beaucoup qui font des pièges? J'en ai pas trop vu. En fait j esquive que les dangers que je vois directement.
Achess: Hello, quelqu'un aurait une seed avec deux pacs uniquement :) ?
leojean890: apparemment dans le top 10 y'a pas mal de pièges :P
Achess: (j'imagine qu'on ne peut retester son code en mode wood ?)
Fangel: ben un des problème de mon IA c est que quand je poursuivi, si je passe un virage je ne vois plus le poursuivant... Donc je reviens en arrière
egaetan: mmmh, je dois faire pareil
RoanixS: J'ai clairement un soucis avec la gestion du "turn" et du "step" (à cause des doubles moves si je comprends... ) le while loop est appellé pour chaque "turn" n'est-ce pas ? :/
egaetan: oui
VilBoub: un pacman DEAD, voit-il encore des pastilles ?
VilBoub: je me méfie... ^^
thoip: c'est pas le retour des morts vivants :)
stephdz: le bonus SPEED est vraiment mal géré : mon pac et un ennemi l'ont tous les deux, sur le tour intermédiaire, ils se seraient vus et j'aurais pu sauver un autre pac présent dans le coin :(
YannDev: bon je sens le ragequit arriver
YannDev: je suis bloqué dans le top200 silver
gregballot: mdr je suis toujours d'opti mon knapsack comme un galerien
gregballot: deja divisé le temps par 6
gregballot: mais toujours trop long
stephdz: plus je complexifie mon heuristique, plus je baisse dans le classement => pas facile de trouver le bon réglage !
YannDev: un knacpsack c'est N^2...
YannDev: c'est super rapide
YannDev: enfin au vu des contraintes
YannDev: déjà t'es #14 donc t'as juste à te laisser pousser
gregballot: baaah le probleme c'est que un knapsack a plusieurs dimensions la
gregballot: Si c'etait la version classique la question se poserait pas
YannDev: ah bah rip
gregballot: Puis j'ai un souci c'est que vu que mon knapsack est sur des combinaisons de chemins, je dois les copier a chaque recursion pour pas les modif par reference
gregballot: Et ca prend un temps de ouf
YannDev: coup dur
gregballot: Mais j'ai trouvé une facon de casser la complexité
gregballot: Juste ca devient un peu complexe lol
YannDev: moi j'arrive pas à piger pk je perds contre des #300
thoip: parce qu'ils ont optimisés la prise de pastilles.
YannDev: c'est ce que j'ai fait aussi :/
Colios13: ah c'est marrant le bot pour monter gold a des time out
BigUP: YannDev, ha bah ca me fait plaisir, je ne suis pas le seul ! ;)
BigUP: YannDev, si tu trouve un truc pour les passer... je prend
AdaoSwann: Petite question. la vision de mes pacs est maintenant limitée, donc l'input() pour les pastilles visibles je peux le mettre 1x par pac ?
Gb42: Quelle structure de données avez-vous utiliser pour représenter la map ?
S1L3nCe: L'input pour les pastilles a pas besoin de changer, ça te donne toutes les pastilles visibles à ce tour tout pac confondu
S1L3nCe: @Gb42 perso Tableau statique 2d de struct Cell
S1L3nCe: vu qu'on connait la max width et height que la grille peut avoir, et j'adapte les loops avec les tailles données au début
Bob: amis de l'usurpation :turtle:
Bob: o/
AdaoSwann: Merci de l'information ^^
YannDev: Tortue à tous
YannDev: BigUp je te dirai mais pour l'instant rien de concluant
YannDev: c'est autorisé les teams sur ce contest ou pas ?
Gb42: OK merci
Monsieur_Y: pour votre sortie vous avez fait comment pour ajouter les différents ordres de mouvement
Gb42: Une seule ligne séparée avec des pipes
Monsieur_Y: car moi ça renvoie ça : MOVE 0 13 10|MOVE 1 2 3|MOVE 2 15 1
Gb42: nickel
Monsieur_Y: la barre est collé donc le jeu n'aime pas
Bob: m'etonnerait que ce soit ca le souci
Gb42: Rajoute un pipe final peut-être
Gb42: MOVE 0 29 7|MOVE 1 29 15|
Bob: perso je mets des espaces parce que c'est plus lisible mais si j';en mets pas ca passe tout a fait bien
Bob: le code par defaut n'en met pas non plus, ni de pipe final, et ca passe aussi
Monsieur_Y: ah yes j'ai ça : has not provided 1 lines in time
Bob: ah
Monsieur_Y: donc monde code n'est pas assez efficace
Bob: t'as bien mis un retour ?
Gb42: Retire les boucles for
Bob: un endl
Bob: ou \n ou autre suivant ton cas
S1L3nCe: Ou alors ça crash quelque part ^^
Bob: vu de loin je mise sur le retour chariot manquant
Monsieur_Y: oui j'ai bien un retour
Monsieur_Y: Sortie standard : MOVE 0 1 3|MOVE 1 9 1|MOVE 2 14 5
Bob: t'as bien 3 pacs ?
Valbou: un timeout après la sortie ?
Bob: apres, possible que t'aies un crash par ailleurs oui
Valbou: de mon côté, je construis la liste d'instructions et je la "join" sur la sortie dans la dernière ligne du code. Ce n'est peut-être pas la meilleur façon de procéder mais c'est stable ;)
Bob: note aussi que c'est pas parce que tu vois tout ton output dans la sortie standard que tu as bien le retour
Monsieur_Y: autant pour moi c'est l'output du boss
Bob: si je vire le cout << endl; a la fin de mon while, je vois bien ma commande mais ca timeoute :p
Valbou: ^^
Valbou: Le dernier de la league Gold arrive à avoir un score de classement négatif :O
Valbou: C'est possible ça ?!
Alshock: ouais j'ai vu ça au fond du bronze quand on était 2000
Bob: c'est possible si tu perds tous tes matches
Valbou: Je me serais attendu à un simple 0 ;)
Bob: en general ca suggere que tu crashes 100 % du temps :)
S1L3nCe: Et on ne peut pas redescendre d'une ligue ?
Bob: c'est arrive une paire de fois d'avoir des ligues wood tres vides avec juste des codes pourris comme ca
Alshock: Bob mais si t'es deuxième, l'autre peut crash avant toi
Bob: et quand tu gagnes contre un score negatif, potentiellement ca peut te faire perdre du score
Bob: du coup tu montes pas
Bob: S1L3nCe, non
Valbou: lol
Alshock: attends keuwa
Alshock: mais wtf xD
Alshock: et du coup si tu réussis à perdre tu montes en élo ?
Valbou: mais si tu perds contre lui tu montes du coup ?
Valbou: :joy:
Bob: je me suis retrouve dans un truc comme ca une fois, fallait attendre que d'autres joueurs arrivent dans la ligue pour pouvoir monter tellement les seuls qui etaient la etaient nuls
AdaoSwann: for j in pastilles: http://chat.codingame.com/pastebin/8dc26570-f2dc-4d0a-b377-f4f8a206a8cb
Alshock: le nivellement par le bas CG edition
Bob: #boulet
AdaoSwann: j'aime pas ce pastebin à chaque fois T-T
Valbou: C'est le contest KiPerdGagne ;)
Alshock: AdaoSwann eh ouais, delete dans la liste sur laquelle tu iteres ça se passe souvent mal
Bob: en plus si t'as mis l'indentation telle qu'elle est vraiment dans ton code, alors ton remove est plus dans la boucle
AdaoSwann: Ah ça fonctionne donc enfin le pastebin ? ^^'
AdaoSwann: Mais je le supprime à la fin, une fois que je suis sorti de ma boucle, genre comme ça:
AdaoSwann: for j in pastilles: http://chat.codingame.com/pastebin/e5a5711d-d4bc-45e8-97ce-b526ea56b3c8
Bob: mais je suis d'accord avec Alshock, modifier le container sur lequel tu iteres c'est rarement une bonne idee
AdaoSwann: je comprend pas l'erreur
Valbou: le remove pue effectivement
AdaoSwann: sélectionné est forcément dans pastilles à ce moment là non?
Bob: je suis plus tres au carre sur python mais suivant la nature de ce que tu as mis dans pastilles, selectionne peut etre "egal" en valeur sans etre necessairement l'element present dans la liste
AdaoSwann: sélectionné = j j est un élément de la liste, donc par conséquent sélectionné aussi non ?
AdaoSwann: sélectionné = j
j est un élément de la liste, donc par conséquent sélectionné aussi non ?
Alshock: normalement t'aurais dû supprimer un élément sur deux de la liste, j'essaye de voir comment t'as réussi à le faire crash avec des doublons mais c'est pas évident
Bob: a la lecture du code, tu as au moins un chemin sur lequel selectionne ne serait pas necessairement defini
Bob: verifie la valeur de selectionne avant le remove
Alshock: ah merde bien vu, je croyais qu'il était répété à chaque fois
Bob: parce que dans la deuxieme moitie tu as if D1<D2 elif D1==D2
Bob: donc si D!>D2, selectionne est jamais place
Valbou: après les accents dans les noms de variables même s'il me semble que ça passe, ce n'est pas recommandé
AdaoSwann: dans pastilles c'est les input avec les coordonnées de visible_Pellet_Count
Alshock: si not a and D1 != D2 and score >= nouveauScore tu reset pas séléctionné
Bob: ah oui aussi tiens
Alshock: d'ailleurs c'est un détail, mais une variable avec des accents c'est très mauvais plan. C'est mieux de garder un code en ascii pur.
Bob: +1
AdaoSwann: non mais en fait initialement a = True, donc sélectionné = pastilles[0] au départ
Vry: Yo Bob
Alshock: @AdaoSwann vu ce que tu as fait, peut-être que tu ne connais pas le mot-clef next ?
AdaoSwann: En effet je ne connais pas
Alshock: Quand tu veux faire quelque chose systématiquement dans une boucle, mets-let à la racine de la boucle, et si un cas particulier est à ignorer tu peux aller directement à la prochaine itération
Alshock: Ceci dit, il reste le problème le plus important : tu remove dans une liste sur laquelle tu iètres !
Valbou: @Alshock: continue me semble plus intéressant que next dans ce contexte
Alshock: pourquoi c'est un problème ? Parce qu'en interne la boucle for itère sur les indices, donc tu commences à l'indice 0 puis l'indice 1, etc... Mais si tu remove l'indice 0 de ta liste, tu passes ensuite à l'indice 1 qui est ton ancien indice 2
Alshock: @Valbou ah mince j'utilise pas assez souvent je croyais que continue c'était next en python
Bob: glop Vry o/
Alshock: c'est effectivement à continue que je pensais
Bob: toujours en silver ?
NoZ-: for j in pastilles.copy(): AdaoSwann ?
AdaoSwann: mais je supprime pas quand j'itère dessus, mais une fois que j'en suis sorti ?
Alshock: C'est pas ce que t'as marqué dans ton pastebin
Bob: si l'indentation est exacte, le remove est toujours dans le for
AdaoSwann: ah oui excusez j'ai oublié l'indentation devant le for j
Valbou: ^^
AdaoSwann: for j in pastilles: http://chat.codingame.com/pastebin/cf3b40e5-187e-467c-b6d1-6bca9394c265
Bob: enfin c'est pas clair, je vois pas le if et le remove au meme niveau et la je sais pas du tout ce que fait python face a ca
Valbou: il crash
AdaoSwann: celui là est bien indenté
Alshock: euh, mais c'est censé supprimer uniquement le dernier j qui correspond à tes conditions ?
Alshock: Bob il pète un câble et dit que l'indentation ne correspond à aucun niveau connu
AdaoSwann: comme ça 2 pacs ne vont pas sur la même pastille
AdaoSwann: j'avoue que le précedent pastebin n'était pas clair
Alshock: D'accord, mais si le pac qui devait aller sur cette pastille est bloqué par un adversaire, tu la remets dedans ?
Valbou: Je ne sais pas à dans quelle ligue tu évolue @AdaoSwann, mais ce n'est pas déterminant au début, même si ce n'est pas parfait
AdaoSwann: Pour l'instant j'en suis pas encore à ça ^^' j'ai essayé de mettre les compétences, sauf que depuis ça me met cette erreur.
Bob: affiche la valeur de selectionne avant le remove
Bob: verifie si elle est bien dans ta liste ou effectivement pas
Bob: #realityCheck
AdaoSwann: si je fait un if selection in pastilles avant c'est bon?
Bob: ca t'evitera le crash mais ca expliquera pas ton bug
Valbou: a priori oui
Alshock: yep mieux vaut crash et chercher à comprendre ce qui le cause que d'éviter le crash la plupart du temps
Bob: et ca veut potentiellement dire que tu "selectionnes" un truc qui n'existe pas, donc tu risques d'avoir d'autres emmerdes plus loin
AdaoSwann: mais le truc c'est que ça plante pas à chaque fois x)
AdaoSwann: donc je peux pas mettre un print
Alshock: trouve le cas de bord
Bob: d'ou l'interet d'afficher
Alshock: tu peux mettre un print à chaque fois que ça va crash
Bob: ca peut suffire a te permettre de trouver ce qui ne va pas, meme si le cas n'est pas reproductible
Alshock: if not selectionne in pastilles: print
S1L3nCe: Initialise ta var à None avant la loop et vérifie qu'elle n'est plus à None avant de remove, ça évitera de faire une recherche dans la liste pour rien
Bob: tu peux aussi utiliser les messages des pacs pour te mettre de l'info dans le viewer, c'est parfois plus pratique a lire que stderr
Alshock: ouais mais les pacs il faut rester court
Bob: encore que la, le nombre de chars est tellement petit que bon bof
YannDev: je pensais pas que gold serait si dur...
Alshock: c'est vra ique c'est réputé être un métal mou
Bob: moi je pensais pas que j'arriverais en gold #holdUp
AdaoSwann: Sortie : [19, 1, 1]
YannDev: c'est honteux ça Bob
YannDev: on a presque le même code
Bob: YannDev ah mais j'ai honte, je dis rien d'autre depuis hier soir
YannDev: plein de gens ont presque le même code que toi :')
YannDev: mais ils sont bloqués
Bob: eh bien ca pourrait etre pire
Bob: ca pourrait etre moi
YannDev: en effet
YannDev: le mythe cassé
Bob: :')
Bob: #goodGuyBob
Bob: ou pas
AdaoSwann: La pastille en 19/1 venait d'être prise par un de mes pacs
AdaoSwann: Je n'ai vraiment pas compris mais j'ai mis le remove à condition que selection soit dans pastilles...
Mais sinon on peut détecter si il y a d'autres pac visibles autour ? Et de quel type ils sont ?
Bob: tu peux detecter si tu es rentre dans quelque chose
Bob: et tu peux eventuellement essayer d'extrapoler la position des pacs adverses a partir de leur derniere position connue
Bob: mais on commence a aller vers de la haute voltige
AdaoSwann: on va plutôt essayer d'envisager cette histoire de mur alors x)
Bob: la ou t'es t'as probablement pas besoin de ca pour avancer
ami123: est ce que quelqu'un peut m'aider (pour les pacs)
Alshock: pose ta question
AdaoSwann: pas besoin de quoi ? des murs ?
Alshock: ah oui de 1200 ms à 76 quand même, c'est vrai que c'est important les flags C++
Bob: AdaoSwann non de deviner ou sont les pacs adverses
Bob: un bon nettoyage de la grille et eviter que tes pacs se rentrent dedans ca ira deja tres loin
ami123: il y a des bugs mais je n'arrive pas a les resoudres
Bob: OK mais il va falloir etre un peu plus specifique que ca
Alshock: comme il dit
Alshock: \o
ami123: il y a un bugs (c'est que a un moment mon pacs s'arrete
ami123: )
MiniWall: Salut, y'a t'il un moyen de changer la couleur de la sortie d'erreur standard ? "\033[30m" à pas l'air de marcher :{
Alshock: ah ah ah on voit les bails de terminal
Bob: ami123 toujours OK mais pareil : sans savoir un minimum comment tu t'y prends et/ou voir du code, ca va etre complique
Alshock: non, c'est une affichage sur un site web tu peux pas le changer comme ça sans customiser l'affichage du site
Bob: juste dit comme ca il peut y avoir 3987 raisons differentes
MiniWall: Yep c'ets bien ce que je pensais, du coup un addon script genre greasemonkey devrait faire l'affaire, si c'est autorisé ?
AdaoSwann: je vois pas du tout comment on peut détecter un impact :/
Alshock: ami123 le minimum qu'il faut c'est un replay de ce bug, ptêtre le bout de code incriminé
Alshock: (ya un bouton share and replay sur le lecteur de codingame)
Bob: AdaoSwann : si t'es pas la ou tu pensais au debut du tour suivant
MiniWall: mais yep merci pour ton aide :)
Bob: MiniWall oui tu peux scripter
BlueGhost31: AdaoSwann si ta position est inchangée alors que tu voulais te déplacer
MiniWall: Niquel !
Bob: si tu n'es pas la ou tu pensais, c'est qu'il y a un autre pac qui etait, ou qui a essaye d'aller la ou tu voulais
Bob: si il y est et qu'il n'a pas bouge, a priori tu devrais le voir directement
Bob: si il n'y est pas et que tu ne le vois pas, c'est qu'il a ete repousse sur une case voisine
ami123: http://chat.codingame.com/pastebin/02612b99-5194-481a-80dc-7c5df7f51581
Bob: en croisant tout ca avec tes propres lignes de vue, ca doit permettre d'eliminer des cas en plus
Bob: apres, reste a voir ce que tu peux faire de l'info :)
ami123: c'est le code que j'ai fait
Bob: on dirait le code par defaut
BlueGhost31: ami123 tu ne peux faire un print en sortie
Bob: y a que le move par defaut
Bob: du coup il va en 15 10 et une fois qu'il y est il est tout content
BlueGhost31: le "or print(None staying here)" c'est pourquoi ?
Alshock: je pense que le stub devrait contenir un test pour rajouter :D à l'output quand il est en 15 10
Bob: tiens oui j'avais meme pas vu
Bob: OK ca va etre plus complique :D
ami123: oui mais c'est le probleme (Bob)
Alshock: La question est : qu'est-ce que tu attendais comme comportement de la part de ce code ? ami123
Bob: +1
ami123: que mon pac ne s'arrete pas.
Alshock: ben à ce moment là il ne faut pas toujours bouger vers 15 10
Alshock: c'est juste un exemple pour te montrer comment bouger le pac, mais s'il y est déjà ça ne bougera plus
NoZ-: j'ai envie de changer de strat, mais je sais pas quoi faire. Vous me conseilleriez quoi : minimax ? (sachant que j'ai jamais fait grand chose d'autre que des heuristiques)
BlueGhost31: NoZ- les heuristiques c'est très bien pour ce contest ;)
ami123: et la mon code va ?
ami123: http://chat.codingame.com/pastebin/d861a496-9f86-4dcc-8537-88f7a6a6a320
BlueGhost31: non plus ami123 il ne doit y avoir q'un seul print c'est le contenu de ce que tu "print" qui dois varier
ami123: :unamused:
ami123: :scream:
Alshock: ami123 ton print sert à dire "voilà ce que je veux que mon pac fasse". Comme dit BlueGhost31 plutôt que de multiplier les commandes il faut que tu changes ta commande en fonction de là où tu veux aller
Alshock: pour commencer essaye de récupérer la position d'une pellet, et dit à ton pac d'aller dessus
ami123: :thinking: comment puis-je dire sa ?
Alshock: hum... qu'as-tu compris des différentes lignes qui se trouvent dans ce code d'exemple ?
BlueGhost31: print("MOVE {} {} {}".format(0, x, y))
BlueGhost31: ca fera bouger ton pac d'id 0 sur le dernier pellet récupérer
Bob: joli one-liner pour demarrer :clap:
BlueGhost31: merci ;) simple et efficace
BlueGhost31: et puis au moins ça rentabilise le A* du referee
Alshock: et l'ordre des inputs par la même occasion. Propre.
Alshock: je crois que les gros pellets sont toujours donnés en dernier en plus non ?
Alshock: 'fin ptêtre pas s'ils sont dans ton champs de vision
BlueGhost31: je ne sais pas j'ai pas checké
Bob: je me demande jusqu'ou ca monte, ca
Bob: faut arreter de dire aux gens qui je suis fainenant sans deconner, y a bien pire que moi
Bob: que*
Alshock: ptêtre bronze si les gros pellets restent au fond des inputs
BlueGhost31: non à moins de rajouter la boucle quand tu as plusieurs pac ;)
BlueGhost31: mais bon c'est juste une ligne de plus :stuck_out_tongue:
Alshock: c'est pas en bronze les pacs multiples ?
BlueGhost31: je crois pas en bois 1 non ?
ami123: ah oui, il y a un autre bug c'est que toutes les pellets vont vers le pac adverse et il les mange donc je perd a chaque fois environ 297 a 0
BlueGhost31: ??? comprend pas ami123 tu peux donner un replay ?
ami123: comment on fait ?
Alshock: bah tu as un crash
Bob: oui enfin en meme temps on va pas te donner un bot pret a tout gagner non plus, hein
Bob: je soupconne qu'a ce stade tu as des soucis de comprehension basique du langage que tu utilises
Alshock: je pense que t'as laissé la ligne "print" et ça python ne connait pas
BlueGhost31: en bas à droite, il y a l'icone partage tu copie le lien
Bob: et faudrait sans doute commencer par la avant d'attaquer un challenge ici
Alshock: @BlueGhost31 il crash au premier tour ça va pas beaucoup aider
ami123: non je ne veux pas en arriver la
BlueGhost31: ok j'avais pas percuté
ami123: seed=-8620855813659348000
ami123: c'est le code de la parti
BlueGhost31: pour le coup le seed ne va pas nous aider
Bob: non ca c'est la seed de la partie
BlueGhost31: je disais à droite de la fenetre d'animation, entre la roue "parametre" et celui du plein ecran
Bob: ami123 je sais pas ou tu veux en arriver mais ce qui est certain c'est que tu n'y arriveras pas vite si tu ne maitrises meme pas un minimum ton langage
Bob: et la je suis desole de le dire mais ca a pas l'air d'etre le cas
ami123: ah oui alors c'est sa -> https://www.codingame.com/servlet/urlinvite?u=3814882
BlueGhost31: non plus
BlueGhost31: mais remontre ton code ça ira plus vite
ami123: c le meme que tout a l'heure
Alshock: ah ah !
BlueGhost31: remplace tout tes prints par celui que je t'ai proposé
Alshock: je suis fier de moi parce que les indcations valaient ce qu'elles valaient et j'ai identifié le bug quand même :P
Bob: donc ce qu'on a deja dit tout a l'heure c'est qu'il y a (au moins) une faute de syntaxe dans le code en question
Bob: et au risque de me redire, si tu n'es pas capable 1. de le voir 2. de l'identifier 3. de la resoudre
Bob: alors vraiment, il te manque beaucoup de competences de base
ami123: oui je suis debutant (au college )
Bob: donc le meilleur conseil que je peux te donner c'est de commencer par apprendre les bases de python avec des tutos beaucoup plus simples
BlaiseEbuth: Yo tout l'monde ! Automaton2000, AutomatonNN !
Automaton2000: et quand on a fait la meme chose
Alshock: Yo BlaiseEbuth !
AutomatonNN: si tu veux faire un truc propre non plus tu fais pas de la personne qui a fait le contest comme ça
BlaiseEbuth: \o
Bob: la, tu vas juste te rendre fou a melanger les question de python avec les problemes d'algo necessaires pour ce genre de contest
Alshock: AutomatonNN est de retour ! :o \o/
R4N4R4M4: Salut tout le monde
AutomatonNN: oui
BlueGhost31: d'accord avec Bob tu devrais t'exercer en commencant par les puzzles
Alshock: <3 R4N4R4M4
ami123: oui je fais les 2 chose en meme temp
Bob: eh bien c'est une (tres) mauvaise idee
Bob: trop de choses a apprendre, trop vite
Alshock: @BlueGhost31 je crois que même les puzzles easy à ce stades sont un peu ardus
Bob: d'accord avec Alshock
Bob: commence par un tuto python, hors de CG
Bob: une fois que tu seras a l'aise, la tu peux revenir pour les premiers puzzles
BlaiseEbuth: Ou voir si il y a un tech.io débutant
BlueGhost31: il y a un tuto python sur tech.io je crois
Bob: et une fois que tu seras a l'aise sur les premiers puzzles, la tu pourras envisager un contest
Alshock: tu vas sûrement apprendre à faire un hello world, un nombre magique et un morpion, et comme ça tu auras assez touché au langage pour comprendre ce qui peut planter
R4N4R4M4: ou pas... quand ça plante, ça plante ! :D
ami123: je regarde des video youtube.
BlaiseEbuth: ami123 https://tech.io/playgrounds/53303/apprendre-python-dans-le-secondaire/presentation-2
R4N4R4M4: Bon début ami123
Alshock: ouah j'aurais jamais été capable de ne fût-ce que penser qu'il existait celui-là
domak: salut à tous
ami123: qui ?
ami123: (Alshock)
BlueGhost31: salut domak
BlueGhost31: ce tuto ami123
domak: j'ai rien fait depuis un bout depuis hier sur le contest... c'est devenu vachement aggressif
Alshock: le playground que Blaise t'a envoyé ami123
domak: moi j'ai des pac-cifistes
domak: et je me les fait bouffer
Alshock: c'est scandaleux
Alshock: dans quel monde vit-on ma p'tite dame ?
R4N4R4M4: J'ai raté le tuto Hello World python de ami123, je reviens au C (au moins tu indentes comme tu veux :D )
domak: bein oui, moi je voulais juste devenir un gentil farmer
Alshock: @R4N4R4M4 si je te vois mésindenter une ligne, je retrouve le numéro de ta maison
Alshock: et je la SEGFAULT !
BlaiseEbuth: Son rêve c'était d'être bon à rien, pas chevalier encore moins roi. :notes:
R4N4R4M4: je connaissais pas la mésindentation, c'est un truc pour se relaxer ? :D
Alshock: on commence par désindenter les épaules, puis les poignets...
R4N4R4M4: LOL
R4N4R4M4: pe->coolDown = max(0, pe->coolDown); // Et si j'oubliais pas le -1, ça serait pas mieux ? :nerd:
Alshock: tes pellets ont des cooldowns ?
R4N4R4M4: (p)ac(e)nemy :D
R4N4R4M4: J'ai pas de pellets dans mon code
R4N4R4M4: J'ai que des cellules avec une valeur
Alshock: donc tes pellets s'appellent gbv pour (g)entille (b)oule (v)erte ? :P
R4N4R4M4: réponse au-dessus :D
Alshock: je préfère les gbv
Alshock: mais c'est vra ique c'est pas con
R4N4R4M4: je les vois pas vertes
BigUP: ha ! daltonnien !
Alshock: ah si chez moi c'est indubitablement vert
**Alshock est très fier d'avoir dit "indubitablement" aujourd'hui. C'est fou ce qu'on peut avoir comme life goal quand même !
R4N4R4M4: Je vois pas de vert là : http://prntscr.com/sgq8no
BlaiseEbuth: Bah y'en a partout
R4N4R4M4: Là je vois mieux : http://prntscr.com/sgq9as
R4N4R4M4: Ca tire quand même bien vers le jaune marron quand c'est petit
AzBeen: Bonjour !
BlaiseEbuth: o/
AzBeen: Excusez moi j'ai un problème que je ne comprend pas
AzBeen: je time out
AzBeen: mais aucune erreur en consoe
AzBeen: console*
stephdz: trop de temps pour répondre => ajoute des logs pour savoir où tu prends trop de temps
Mazelcop: tu es en python AzBeen ?
AzBeen: Oui
Fangel: et surtout pense à faire flush après chaque print !
Mazelcop: si c'est le cas il faut faire attention à rajouter le paramètre "flush=true" dans tes prints
AzBeen: flush?
Mazelcop: print("coucou", flush=true) par exemple
Fangel: sys.stderr.flush()
AzBeen: j'ai mis un flush donc
Fangel: ça force l'envoi du sys.stderr, sinon ça s'accumule et tu peux avoir le timeout sans pouvoir obtenir ce qui est dedans.
AzBeen: mais ça ne change rien,
AzBeen: comment je log @stephdz
Snef: C'est écrit dans les commentaires du code par défaut AzBeen
Fangel: maintenant il faut que tu print régulièrement à combien de temps de reflexion tu es.
351062: Mazelcop: dans ta recherche, tu traites tous les pacs en meme temps ou individuellement ?
Fangel: il faut que tu saches si ton code rentre dans une boucle infinie ou est juste trop lent.
AzBeen: hmm et si j'ai supprimé le code par défaut ? ^^'
Mazelcop: Neumann individuellement
Neumann: Ok
R4N4R4M4: AzBeen Tu peux le retrouver en cliquant sur la flèche en rotation en haut du code, mais n'oublie pas de copier ou sauvegarder ton code actuel, sinon tu vas le perdre
BlaiseEbuth: AzBeen print("Debug messages...", file=sys.stderr)
AzBeen: Merci
AzBeen: NameError: name 'sys' is not defined at Answer.py. in <module> on line 12
BlaiseEbuth: import sys
AzBeen: ah bah oui je l'avais enlevé *facepalm*
Magus: Neumann: Mazelcop: mais comment tu gères les pacs individuellement dans le fog si tu veux prune avec le score ? Parce que si un pac ne bouge pas mais l'autre si, tu peux tomber sur le bon score quand même. Individuellement t'as pas l'info. Je rate un truc ?
Neumann: Tu peux pas pruner avec le score avec une gestion individuelle, en effet
Mazelcop: Magus à la base je voulais prune avec le score uniquement si l'adversaire farmait avec tous ses bots ou pas du tout
AzBeen: Et c'est censé faire quoi ? en dehors de print un "Debug messages..." ?
Mazelcop: ça peut être utile surtout au début vu que tout le monde est quasiment en full farm
Neumann: T'as quoi comme genre de recherche Magus ? Un truc random ?
BlaiseEbuth: AzBeen: à toi d'afficher des infos pertinentes pour trouver d'où viens ton problème...
Magus: Neumann: c'est un AG que j'ai copié/collé vite, depth 6 (juste pour pouvoir SPEED et voir ce que j'en fait)
Magus: *vite fait
Neumann: Ok
Magus: je mettrais mieux si je trouve un vrai truc pour gérer le FoW et l'adversaire
Snef: Petite question pour une simu individuelle vous faite un ordering random pour la recherche des pacs ou 0genre vous testez toutes les combinaisons d'ordering ?
Magus: la question se pose pas pour un AG, mais en théorie faudrait d'abord sélectionner les coups de ton pac le "plus fort" en premier.
Magus: Mais bonne chance pour déterminer qui est le plus fort.
Snef: faire une premiere petite recherche genre 10% du temps pour faire un "ranking" ?
Magus: Instinctivement ce que je serais c'est déjà tester ceux qui ont le speed actif en premier. Ensuite ceux qui ont le cooldown de disponible. Et enfin les autres.
Magus: *ce que je ferais
Magus: mais je garanti pas que ça marche, la c'est juste mon instinct
tblancbeyne: Il y a pas un bug dans le traitement des collisions ? ( https://www.codingame.com/replay/463641274 , tour 5 en bas à droite)
Drazyen: Non, c'est pas un bug.
tblancbeyne: Du coup on peut manger à distance ?
Drazyen: Le bleu de droite est avancé à gauche, le rouge de gauche est avancé à droite (donc sur la même case que le bleu) et le rouge au milieu est avancé à droite, puis on gère les collisions.
Drazyen: C'est juste que tu ne vois pas la résolution des conflits ^^
tblancbeyne: Ok merci
Magus: la gestion des collisions du referee est pas dur à coder, mais elle pas du tout intuitive pour un humain
tblancbeyne: Je pensais que le rouge de droite faisait bouclier pour celui de gauche
Magus: (facile != performant hein, parce que la triple boucle merci)
Drazyen: J'avoue que j'aurais peut-être dû jeter un coup d'oeil au code du referee au début du contest pour voir
Drazyen: Ca me semblait tellement le ****** la gestion des collisions que j'avais préféré les interdire ahah
AzBeen: Je crois que j'ai trouvé... Mais c'est bizarre.
Dans ma boucle for, je reste bloqué à la fin de ma 1ère itération, sans commencer la 2ème ni même poursuivre hors de la boucle
BlaiseEbuth: Mais tu bloques avant une instruction ?
AzBeen: Non j'ai mis en print en fin d'itération il fonctionne
Gh0stm4chine: https://www.codingame.com/share-replay/463648147 c'est beau, mon adversaire a implémenté du bm dans son ia
BlaiseEbuth: Et tu as un print au début de ton for avant toute instruction ?
AzBeen: ah je viens de le faire au début oui, mais si je fais le test pour la deuxième itération en fin de boucle, ça bloque
BlaiseEbuth: Donc une de tes instructions à l'intérieure de la boucle merde à la deuxième itération.
JBM: (+~) = (uncurry (***) .) ((+) *** (+))
Vry: Ben histoire de faire un truc en attendant de trouver la motivation de finir la simu. je vais code un switch pour voir si ça aide ...
JBM: qu'est-ce qu'on rigole, des fois
BlueGhost31: Gh0stm4chine :joy:
BlaiseEbuth: Reste à trouver laquelle et pourquoi. Il faut que tu essayes d'afficher le maximum d'infos. Genre les résultats de chaque instruction de ta boucle, pour voir laquelle bloque et si il y'a des résultats incohérents.
JBM: bon on peut supprimer la seconde paire de parentheses, on est pas en lisp
BlaiseEbuth: Tu fais un curry JBM :yum:
Neumann: Y'a Psyho qui reviens
Neumann: Top10 soon
Vry: C'est qui lui ? @Neumann
Neumann: Un mec très fort
Neumann: reCurse-tiers
Alshock: ah ouais on en est là ?
Alshock: y a la pyramide des niveaux avec des petites photos dessus
AzBeen: J'ai trouvé quelle instruction bloque. Mais je comprends pas pourquoi
AzBeen: nouvellePastilleX,nouvellePastilleY, nouvellePastilleValeur = [int(k) for k in input().split()]
JBM: heuristique: c'est les gens du top contest que tu vois jamais en multi
Alshock: est-ce que tu pourrais t'être décalé dans les inputs à un moment AzBeen ?
Alshock: tu flush bien tes prints qui permettent d'isoler cette ligne ?
AzBeen: Non je ne crois pas m'être décalé dans mes inputs, le premier avec les coordonnées des pastilles est correct, et il bloque au deuxième
AzBeen: et à ce moment là, il n'y a aucun print
AzBeen: le seul print est à la fin
Alshock: j'ai eu un bug du genre à un moment en python, et je vais pas te mentir j'ai aucune idée de comment je m'en suis débarassé
AzBeen: Aïe
stephdz: le boulet, j'ai du virer une ligne de code super importante de mon algo sans le faire exprès et ça fait 2 jours que je ne comprenais pas pourquoi j'avais chuté dans le classement... forcément, si je sais que des cases sont vides, mais que j'y vais quand même, ça fait perdre beaucoup de matchs !
BlueGhost31: AzBeen ça pourrait venir de la boucle aussi autour de ta ligne
Bob: AzBeen si ca bloque sur un input() potentiellement c'est que tu lis trop de trucs
BlueGhost31: ou pas assez
AzBeen: C'est-à-dire?
BlueGhost31: ta ligne est dans une boucle sur le nombre de pellet
AzBeen: Oui
AzBeen: mais quand je print dans cette boucle, avant cette instruction, ça fonctionne
BlueGhost31: et les pellets tu ne les a pas déjà lu ailleurs par hasard?
BlueGhost31: dans ce cas tu attendrais indéfiniment une entrée qui n'arriverait pas
AzBeen: une seule fois, dans un if qui n'est utilisé qu'une fois
AzBeen: http://chat.codingame.com/pastebin/11e13be9-aa93-46f4-a088-95d9f640e49e
BlueGhost31: ok normal
AzBeen: Alors j'ai pas bien copié, mais le a=True est au même niveau d'indent que for
BlueGhost31: tu ne dois pas mettre la boucle des pellets dans celles des pacs
BlueGhost31: elles sont indépendantes
BlaiseEbuth: RTFS
BlaiseEbuth: (╯°□°)╯︵ ┻━┻
AzBeen: J'ai mis comme ça pour donner une destination à chaque pac
AzBeen: je vois pas comment faire autrement
BlaiseEbuth: C'est pas toi qui décide dans quel ordre arrivent les infos...
AzBeen: Mais en faisant comme ça je ne gène pas le sens d'arrivé des input()
AzBeen: j'y ai prêté attention
BlaiseEbuth: Tu as déjà lu les pacs avant ?
AzBeen: avant j'ai lu tout les inputs jusqu'au nombre de Pastilles Visibles (inclus)
BlaiseEbuth: Ton print pose problème. Tu lis l'input dedans
BlaiseEbuth: ça décale tout
AzBeen: Ah je me suis mal exprimé.
AzBeen: J'ai print(input()) pour vérifier justement qu'il y avait autant de nombres que de variables avant
AzBeen: dans : pastilleX,pastilleY,pastilleValeur = [int(k) for k in input().split()]
AzBeen: et c'est bien le cas
AzBeen: donc c'est pas un problème de trop / pas assez d'entrée
BlaiseEbuth: J'entends, mais c'est quand même faux.
Bob: quand tu appelles input(), il lit des trucs
Bob: donc print(input()), tu lis des trucs en plus
BlaiseEbuth: voilà
AzBeen: oui mais c'était juste pour tester je l'ai enlevé
AzBeen: ah je comprends je l'avais pas enlevé sur le pastebin
AzBeen: d'ailleurs je me suis trompé dans le test. ça bloque à l'itération i==1
AzBeen: quand i==1, dans la boucle j je peux pas print(input())
AzBeen: AH mais je suis bête.
AzBeen: j'ai compris -.-
BlaiseEbuth: On en reviens à ce qu'on disais tout à l'heure. Tu essayes de lire pacCount fois les pastilles
Bob: ca irait pas plus vite que tu montres tout le code de lecture en fait ? :)
Bob: ah oui, vu BlaiseEbuth
Bob: je plussoie
Gh0stm4chine: Le bot silver est stable ?
AzBeen: Réglé, j'ai itéré les input dans une boucle à part pour les mettres dans une liste, donc dans mes boucles j'utilise cette liste et ça fonctionne
AzBeen: désolé de vous avoir fait perdre votre temps sur une erreur aussi ridicule ^^'
BlaiseEbuth: :thumbsup:
BlaiseEbuth: Gh0stm4chine ?
Gh0stm4chine: je parle de son classement, il va encore descendre un peu ou c'est mort :p
AzBeen: Donc ce côté là est réglé. Cependant dans ma fonction distance (j'utilise la distance Manhattan), je ne considère pas les passages qui vont de d'un bord à l'autre
Alshock: Je sais pas mais en tout cas ton IA qui crash i lva falloir la repush Gh0stm4chine :P
AzBeen: et je n'ai pas la moindre idée de comment l'envisager...
Alshock: @AzBeen min(dx, width - dx)
Gh0stm4chine: oui haha
Alshock: par contre si ya pas de passage vu que c'est à vol d'oiseau ça va considérer que la gauche est quand même proche de la droite
Gh0stm4chine: quand je rejoue la partie qui a crash, ça le fait pas, c'est chelou non ?
AzBeen: Ah merci beaucoup
BlaiseEbuth: Cette phrase est Automatonesque Alshock
BigUP: AzBeen, c'est déjà un bon debut, ca permet d'aller jusqu'en silver au moins si tout le reste est bien géré
AzBeen: je pensais que ce serai beaucoup plus long en terme de lignes
Alshock: On passe clairement pas mieux le test de turing que lui
BlaiseEbuth: M'inclus pas là dedans... ^^
Zanbez: Automaton2000 , Turing, ça te parle?
Alshock: @AzBeen ce que je t'ai donné c'est juste la distance sur l'axe x hein, on s'entend bien ?
Automaton2000: faut juste pas les mêmes choses
domak: Dites, les super-pellets, vous les gérez à part ou dans vos scores de move? Je les gère à part pour les affecter correctement à mes pacs mais j'ai plein de soucis du coup sur des collisions...
Alshock: @AzBeen le tour de la map fait width, donc si pour aller de a à b dans un sens (sans passer par le bord) c'est dx, alors en passant de l'autre côté c'est width - dx
Alshock: @domak pour éviter les collisions, interdits les path qui collisionnent ! :D
Alshock: -t
domak: oui c'est inclus dans mon score quand je vais mes moves mais ça entre en conflit avec la chasse au super pellet qui sont gérées par ailleurs
domak: si tu as 3 pellets et 4 pacs, je fais affecter 3 pacs à la chasse, mais je vais gérer le 4ème par ailleurs...
Alshock: et tu peux pas rassembler la chasse au super pellets pour que ses paths soient aussi pris en compte quand il faut pas se croiser ?
domak: si. c'est ce qu'il faudrait que je fasse
Gh0stm4chine: moi je considère que je peux atteindre que la moitié des supper pellets les plus proches, si l'adversaire est pas trop con..
Alshock: si tu as en priorité les super pellets faudrait (à mon humble avis, et pour faire simple) générer les paths vers des super pellets qui ne se collisionnent pas, et ensuite faire la chasse en évitant de collisionner les autres chasseurs, chasseurs de super pellets compris
domak: mais mon code s'y prete mal. Dans un cas, je fais de l'allocation, dans un autre je fais du scoring, c'est 2 buts différents
domak: oui Alshock c'est ce qu'il faut que je fasse
Alshock: certes, mais t'as bien des paths des deux côtés. Au pire tu rajoutes juste comme un sac l'impératif "faites pas chier les pacs déjà alloués" aux scoreurs
domak: oui. Je vais revoir mon truc, mais j'ai ajouté tellement de feature (floyd, varanoi, etc) que c'est devenu un spaghetti code
domak: j'arrive même plus à décoler du bottom gold
Nelimee: J'ai jamais essayé de coder un Voronoï, c'est facile/efficace à coder?
Alshock: ça dépend de ce que t'as besoin de faire avec. Si c'est juste pour associer chaque pellet à un pac sans besoin de vitesse tu peux itérer sur toutes les pellets, calculer le pac le plus proche, y associer la pellet et hop ! un voronoï du pauvre !
domak: oui c'est ce que je fait
Alshock: sinon tu peux faire pareil en presque aussi nul avec un floodfill qui part de tous les pacs en même temps.
Nelimee: Non mais les algorithmes similaires c'est pas un soucis, je demandais spécifiquement pour le Voronoï ^^
domak: mais comme j'ai un floyd précalculé ça va vite (mais c'est pas précis s'il y a des pacs entre le pac et la pellet)
Alshock: après si tu veux implémenter un voronoï complet dans un espace infiniment sécable, là on va rentrer dans un algo de Fortune (le nom du mec, pas parce que c'est fait à l'arrache), et c'est plus complexe
Nelimee: J'ai fait un truc semblable à un Voronoï mais avec un autre algo, parce que j'ai jamais aimé Voronoï, mais je me suis rendu compte que je n'avais jamais essayé de l'implémenter en fait
domak: non moi j'ai fait la manière simple
Alshock: d'ailleurs j'ai complètement foiré mon floyd quelque part, parce qu'il est plus lent que N floodFills... C'est pas normal du tout ça
Nelimee: De toute façon N floodfill c'est suffisamment rapide :p
domak: tu le fais à l'init du game
AzBeen: cet évènement est bientôt fini. Il y en a régulièrement des commes ça ?
Alshock: voronoï c'est pas un algo à proprement parler, c'est juste le découpage de l'espace en cellules de proximité à un point de la liste
domak: et après le calcul des disatnce c'est gratuit
Nelimee: Ha oui bien vu Alshock, effectivement j'ai mal utilisé le terme! Bon ben je fais un découpage de Voronoï en linéaire on va dire, ça me suffit x)
Alshock: @AzBeen relativement, mais je saurais pas dire la fréquence.
AzBeen: cool ! merci :)
Alshock: Ptêtre un tous les 3 mois ne moyenne si je dois me mouiller ?
Bob: AzBeen, generalement 3-4 par n oui
Bob: an*
BlaiseEbuth: Floyd j'en ai fait un à l'arrache mais j'ai merdé quelque part c'était trop lent... Mais comme j'en avait pas besoin je l'ai juste viré... Pas se casser l'cul pour des conneries...
Bob: ca depend un peu des annees
BlaiseEbuth: Plus maintenant, c'est deux par an.
Alshock: BlaiseEbuth ah ah ah dans mes bras mon frère ! :P
Bob: celui-ci on l'a attendu longtemps et c'est uniquement "grace" au confinement qu'on a eu OoC en plus
Alshock: note comme j'ai enlevé le "@" rien que pour toi @BlaiseEbuth
**BlaiseEbuth fait un calin à Alshock
Bob: AzBeen: mais tu peux toujours te faire les dents sur les contests precedents qui sont en multiplayer
Bob: et la t'as un peu de stock pour te marrer
**Alshock entame une danse de la joie en claquettes
Bob: sans compter les multi de la community
Alshock: comme Oware par exemple
Bob: ou Coders of the Realm :angel:
Bob: #shamelessPlugDetected
Gh0stm4chine: vous avez des bonnes références pour apprendre à faire des ias en bonnes et dues formes ? c'est mon premier contest, et mon code ne ressemble à rien j'ai l'impression
Bob: Gh0stm4chine ca depend de ce que tu appelle une IA en bonne et due forme
Bob: il y a pas mal de post-mortem sur le blog et le forum pour avoir de bonnes pistes
Alshock: ça ressemble à rien si tu t'y prends mal, si tu l'avais bien codé ça ressemblerait à rien ! ;)
Bob: et si t'es motive, il y a le skeleton de Magus pour Fantastic Bits
BlaiseEbuth: Et les incontournables articles de Bob.
Bob: qui est sans doute une mine
BlaiseEbuth: C'est pour CSB non ?
Bob: nope, c'est pour FB
Alshock: y en a un aussi sur CSB
Bob: de memoire il y a tout le code de sa simu du moteur et de l'AG
BlaiseEbuth: Je le connais pas celui pour fb
Gh0stm4chine: https://www.codingame.com/blog/best-programmers-reveal-magic-code/ ça ?
Bob: il manque en gros "que" la fonction d'eval
BlaiseEbuth: Bah il l'avait fait pour csb ça
Bob: donc deja beaucoup a puiser pour la structure du code, etc
BlaiseEbuth: http://files.magusgeek.com/csb/csb.html
Gh0stm4chine: cool merci, je vais commencer par y jeter un coup d'oeil
Alshock: En se rappelant toujours le mantrat de la paresse évidemment : https://www.codingame.com/blog/lazy-keep-simple/
Bob: ok mais pour FB il a aussi publie son code
Bob: enfin bon avec tout ca t'as deja un peu de lecture :D
BlaiseEbuth: Ah. L'avais pas vu...
Bob: https://github.com/dreignier/fantastic-bits/blob/master/fantastic-bits.cpp
Bob: linke depuis le premier blog post
Gh0stm4chine: Alshock yep j'avais commencé par lire cet article :p
BlaiseEbuth: Ah ok. Merci
Alshock: @Gh0stm4chine moi j'ai été trop flemmard pour le finir, tu penses que Bob serait fier de moi ?
Alshock: C'est même pas vrai en plus, je fais honte à mon propre mantra
Gh0stm4chine: je pense que si tu as bien saisi l'article, il ne faut pas tout lire justement.. enfin pas d'un coup :D
Magus: mon code pour fantastic bit faut par contre implémenter une eval
Magus: faut pas déconner j'ai pas tout donné !
Neumann: Ouais, il reste 2 lignes à ajouter pour faire top 10
Neumann: Faut pas déconner
Magus: mais ça fait quand même rager des gens parce qu'il parait que juste en mettant une éval débile du fait top 20
Magus: *tu
Magus: mais bon de toutes façons comme l'a dit [CG]SaiksyApo, "Multiplayer is a zoo"
Magus: donc c'est boin
Magus: *bon
Bob: sur ce, moi je vous souhaite la bonne soiree
Bob: na
Bob: soyez sages :*
BlaiseEbuth: o/
Gh0stm4chine: bonne soirée
Bob: et mangez pas trop de pastilles
BrainSolver: Magus, ca doit être moi l'éval débile qui fait top 20 : eval=game.myScore;
BrainSolver: :grinning:
Alshock: en même temps c'est déjà une très bonne éval :D
Magus: m'étonnerait que cette eval aille bien loin, parce que la profondeur de l'AG va rarement aller jusqu'à mettre des buts
Magus: mais avec juste un critère en plus je pense que tu fais top 20 ouai
Magus: juste regarder la distance entre les wizards et les trucs à jeter (snaffle ? je sais plus)
dbdr: oula, marquer des but, ça m'a fait un sacré context switch :D
[CG]Maxime: ah le ctrl+click activé enfin !
[CG]Maxime: merci [CG]Nonofr :) you're my Hero
[CG]Nonofr: Oh non je suis démasqué !
ksGold: je vais vous botter le cu
NoZ-: Est-ce que les sorties d'erreurs qui se produisent juste après un timeout sont quand même affichées ? Je me suis mis une sortie d'erreur juste après mon output, la sortie d'erreur s'affiche mais j'ai quand même le timeout...
egaetan: NoZ ça peut arriver
egaetan: je crois
**egaetan timeout
PhOeNyX: Le code de Magus pour FB il était écrit en C++, il a fallu que je traduise tout ça en Java pour faire un truc que je comprenne
PhOeNyX: spa sympa
Gb42: J'aimerais bien placer un breakpoint moi
NoZ-: Ok, donc j'ai pas de moyen de comprendre pourquoi je timeout :cry:
PhOeNyX: Merci beaucoup pour le ctrl+click, j'avais essayé au début du challenge et j'avais été très déçu. :D
[CG]Nonofr: très déçu, rien que ça ! :O
PhOeNyX: eheh
PhOeNyX: https://www.codingame.com/replay/463754865
[CG]Maxime: Nonofr, moi ça me fait plaisir, ça te suffit pas ?
[CG]Nonofr: ton bonheur est la seule chose qui compte, bien entendu ! (:
Neumann: Ils sont mignons
[CG]SaiksyApo: Ce qui me plait chez toi, c'est ton petit bibon mignon, mignon, mignon, gnon gnon !
[CG]Nonofr: ça change un peu ! ;)
Neumann: C'est le télétravail, vous vous manquez
[CG]BOUGA: il y a du monde dis donc
dbdr: vous decouvrez la participation au contest? :D
Gb42: Oui
[CG]Maxime: oh [CG]BOUGA !
[CG]Maxime: ouais Neumann, ils me manquent :)
Neumann: Vous avez prévu de continuer le télétravail longtemps ?
Alshock: [CG]Maxime Ouais ça se voit les gars que le patron lit ce chat hein :P
[CG]Maxime: au moins tout ce mois
Neumann: :ok_hand:
Mastard: wow je me tape des timeout tout le temps depuis 5 min, avec le meme code qui marchait il y a 10 min
thoip: Mastard oui c'est la reception des données qui mets 100ms
Mastard: aaah mais c'est pour ca que je commence ma boucle avec deja 123ms
Mastard: j'etais en train de m'arracher les cheveux xD
Snef: C'est possible d'avoir le chemin rapportant le plus de pellet en un seul bfs ou il y'a mieux comme algo ?
Snef: (pour un pacman)
egaetan: Snef oui c'est possible
Snef: egaetan je t'ai pm à ce propos si tu as 2 mn :)
leojean890: 501 replays en 19h depuis mon dernier submit, ça submit pas mal en gold dis donc, et c'est pas que kovi ;P
leojean890: et moi #230, je tombe dans les abysses;o
Mastard: du coup ce probleme de timeout arrive à tout le monde ?
leojean890: mon code a fait 2 voyages complets depuis ce matin 230 => 170 => 230 => 170 => 230
leojean890: aller retour *2
leojean890: mais vu que le top se renforce j'ai peur de tomber plus profondément dans les abysses si je ne fais pas qqc ;o
leojean890: Mastard pas moi
Mastard: bah alors je comprends pas...
leojean890: mais jfais pas un truc très très lourd niveau time
leojean890: je fais juste un bfs complet par pac par tour
R4N4R4M4: leojean890 touche à rien, moi je fais des choses et ça ne fait que me faire descendre :D
leojean890: et d'autres trucs qui coutent lrge moins
leojean890: R4N4R4M4 j'ai cru constater hier qu'avec un même code c'est super dur de se retrouver "à sa place" en le resubmittant:p
Kh4z: je confirme : O
leojean890: genre je suis 200, je tente une modif, je passe 260, je resubmit le premier, je me retrouve 250 au lieu du 200 de 20 min avant
leojean890: et du coup je tente encore un truc, je suis 230, je le laisse se stabiliser, et là il monte :p
leojean890: Kh4z c'est parce qu'il y a des scores assez serrés, et même si on est en moyenne meilleur que qqn, on peut chopper des loses sur des games où l'autre a l'avantage..
Mastard: rien que la lecture des données est à 95ms, avec le code de base quasiment :o
R4N4R4M4: oui c'est vraiment bizarre ce jeu, je pense qu'on a tous des features différentes et tant qu'on a pas codé la totale et bien ça va être dur de se stabiliser
leojean890: du coup vaut mieux avoir des idées qui font VRAIMENT la différence avant de submit..
Nelimee: Mastard En quel langage? :o
Kh4z: je doute coder la totale avant la fin^^
Mastard: TS
leojean890: 95 ms la lecture de données ? wtf
BlaiseEbuth: Mastard tu dois lancer le chrono APRES le premier input. Sinon tu mesures le temps du referee
R4N4R4M4: pour moi la totale, c'est répondre à tous les cas qui peuvent se présenter, j'en suis loin
Nelimee: Ha, parce qu'en C++ je fais la lecture + 1 BFS par case + au moins 4 autres BFS + d'autres trucs sympas en 40ms
Mastard: aah
Nelimee: Je me disais aussi que c'était étonnant
Gb42: Ranarama, ça me rappelle un vieux vieux pote qui s'appelait comme ça sur Worms
Mastard: effectivement ^^
R4N4R4M4: ha ha possible que c'était moi, mais j'ai pas trop joué à Worms en ligne
leojean890: R4N4R4M4 clair, faut vraiment avoir un algo très solide... et c'est dur de tres bien appliquer ses idées, ça reste souvent légèrement approximatif pour ma part..
leojean890: R4N4R4M4 répondre à tous les cas qui peuvent se présenter c'est le top 10 en fin de contest je dirais et encore..:P:P
R4N4R4M4: même approximatif, vaut mieux faire quelque chose que rien
leojean890: y répondre parfaitement j'entends
leojean890: bah moi c'est trop approximatif, notamment ma gestion de l'adversaire, donc ça ne monte pas super haut :s
R4N4R4M4: là je suis en train de régler le problème des big pellets quand c'est pas forcément le pac le plus proche qui doit les prendre...
R4N4R4M4: je vais faire un truc approximatif et ça sera toujours mieux que de laisser mes pastilles à l'adversaire
leojean890: moi c'est tjr le plus proche qui y va :P c'est pas forcément optimal ;)
R4N4R4M4: Sans forcément aller jusqu'à vouloir prendre 3 pastilles sur 4... :D : https://www.codingame.com/replay/463785240
R4N4R4M4: Mais sur ce game, 3 / 4 est jouable, par contre je me vois pas coder ça
leojean890: notamment si un mec est le plus proche pour 2 pellets
R4N4R4M4: oui voilà
leojean890: faut en envoyer 2
Neumann: CG-Sync fonctionne plus avec Monaco ou c'est que chez moi ?
leojean890: bah moi je le gère pas encore, mais je le considérais avec mon algo hongrois..
leojean890: jamais testé CG-Sync..
R4N4R4M4: faut minimiser la somme des distances ^ 0.9
Nelimee: Vous allez vraiment vous embêter à faire un algo hongrois?
R4N4R4M4: c'est quoi l'algo hongrois ?
BlaiseEbuth: C'toujours meiux qu'un algo malgache...
R4N4R4M4: j'ai trouvé sur wiki
Neumann: R4N4R4M4: t'as testé la "patience" ?
R4N4R4M4: c'est un algo aussi ?
BlaiseEbuth: stoi l'algo
Neumann: Au lieu de faire : sum(d^0.9), faire sum(0.9^d)
R4N4R4M4: ah, ça marche aussi ?
Neumann: Enfin plutôt : sum(pellet_value * 0.9^d)
R4N4R4M4: Ca marche à l'envers :D
Neumann: A maximiser
Neumann: Oui
Neumann: Ca doit être équivalent
R4N4R4M4: ah oui, je pense que ça peut marcher aussi, je trouvais plus logique de rogner la distance au fur et à mesure qu'elle augmente, mais bon...
Neumann: Ca fait pareil
Mazelcop: c'est une gaussienne votre truc non ?
R4N4R4M4: C'est pas marrant Mazelcop :D
R4N4R4M4: On se gausse pas !
Mazelcop: ^^
thoip: c'est approximatif ce calcul de distance
R4N4R4M4: bah non thoip
thoip: tu prends pas en compte les murs.
BlaiseEbuth: stoi l'mur
R4N4R4M4: soit t'es linéaire avec une puissance 1, soit tu décrois avec < 1, soit tu crois avec > 1, très précis au contraire
R4N4R4M4: après tu peux mettre puissance 1/PI ça marche aussi :D
thoip: moi je recalcule pour chaque pac les parcours possibles.
R4N4R4M4: Je pense qu'il y a pas d'autres moyens en effet
R4N4R4M4: Qui a simplifié le graphe ?
thoip: je recalcule en tenant compte des obstacles pour chaque point de la carte.
Snef: c'est on code live qui fais ça thoip ?
Snef: ton*
thoip: oui ca prends moins de 2 ms
PhOeNyX: Moi je prends en compte les murs
PhOeNyX: et les pacs sont des murs
PhOeNyX: ahah
Snef: pareil PhOeNyX haha
Snef: enfin sur mon vieux code je refait tout là :p
PhOeNyX: bon en fait ce ne sont pas tout à fait des murs
PhOeNyX: j'ai des conditions
thoip: c'est une impasse pour moi qu'un pac killer peut passer.
PhOeNyX: un pac n'est pas un mur si je peux le bouffer, et si c'est un allié ce n'est un mur que s'il est "proche"
Alshock: ah yes
Alshock: l'erreur seul est plus longue que ce que le site peut afficher
Alshock: bo sur ce, moi je file manger <3 sur vous
Mastard: mais quel $ù$^*ù$^$ù* je faisais 35 bfs par tour
Mastard: tu m'etonne que ca timeout
Gb42: J'ai codé pour privilégier le chemin le plus court par rapport au gain potentiel. Résultat mes perso ne bougent plus. Ca fonctionne !!
Mastard: ah j'ai mis ce systeme de ratio aussi, ca marche bien pour moi
thoip: Mastard, je fais un bfs pour chaque point de la carte pour chaque pac. moins de 2 ms.
Mastard: WHAT ?
Mastard: what kind of sorcery is this
Mazelcop: ben c'est un floodfill non ?
BlaiseEbuth: Dépends du langage aussi...
thoip: non dépend comment tu structures tes donnees.
Mastard: moi pour chaque pac je fais tous les chemins possible autour de lui, avec une limite de longueur
Mastard: ca doit pas etre optimisé haha
Snef: tout les chemins possible c'est différent de toute les distances aussi
R4N4R4M4: En 35 j'avais fix la fuite, mais non, il veut pas fuir !!! https://www.codingame.com/replay/463806643
BlaiseEbuth: Ok structures bien tes données et avec fais moi un bfs en python et un en c++. SI celui en python est plus rapide je t'appelle monsieur.
Mastard: sachant qu'il fait un bfs/pac/point de carte, je trouve que c'est relativement equivalent
Snef: Mastard, tu as un chemin par case quand tu fais les distances
Snef: quand tu fais les chemin tu as plusieurs chemin par case donc ça me semble être beaucoup plus couteux
Mastard: je sais pas... quand j'arrive à une case, si j'ai deja un chemin qui y mene et qui est plus court, j'arrete le chemin en cours
Mastard: nan mais en plus deja je fais une grosse connerie, c'est chercher les chemins possibles, et calculer leurs valeur en pastille apres
Mastard: alors que je devrais le faire en meme temps
Snef: oui
Mastard: c'est ce que je suis en train de changer
Mastard: mais vu qu'avant ca me faisait pas de timeout, j'avais laissé comme ca
Mastard: par contre 1 bfs/pac/point en 2ms, ca me rend fou lol
Snef: moi j'avais 1 bfs/point/point en 4ms
Mastard: :sob:
Snef: donc je trouve ça même un peu lent le 2ms :p
Mastard: bon en fait c'est la 1ere fois que je fais un bfs de ma vie dons je dois pas le faire bien
BlaiseEbuth: Tu codes en quoi Mastard ?
Mastard: j'ai cherché un peu sur le net pour avoir l'algo, je l'ai transformé en TS sans trop reflechir
Snef: ah je viens de voir typescript :p
BlaiseEbuth: Ouai...
Snef: je fais du js au taff et je t'avoue que je préfère faire du c++ ici haha
Mastard: ouais j'ai commencé un projet TS au taf, je me suis dit que ca me permettrai de m'ameliorer de faire le challenge en TS
Mastard: je chosiirai autre chose peut etre la prochaine fois
Snef: après ici c'est bueacoup d'algo donc je sais pas si c'est très "utile" pour le taff
Mastard: non c'est certain mais prendre les habitudes et tout quoi
Mastard: de toute facon j'avais pas pour objectif d'etre top 100 forcement haha
Snef: go gold !
Mastard: deja 585 la, pour mon premier challenge CG, je suis content ^
[CG]Thibaud: gg Mastard
BlaiseEbuth: Bleurfl... J'aime les double free or corruption. Surtout quand ils ne se produisent qu'une fois sur 1 milliard...
Mastard: thx ^^
Gb42: J'ai bossé sur ce truc pendant 3 heures d'affilé. Et là ça crashe. Et je suis deg.
nib: en silver, la nouvelle regle : "You can now see pacs that have died." A quoi ca sert ?
Neumann: A voir les pacs morts
BlaiseEbuth: A voir les pacs qui sont morts...
Gb42: Je vois des gens qui sont morts
R4N4R4M4: nib tu sais qu'un Pac est mort
R4N4R4M4: avant tu savais pas, tu le voyais pas c'était tout
R4N4R4M4: maintenant tu vois les morts et les visibles, les autres sont vivants et invisibles
nib: merci pour vos réponses, la plus utile est de loin celle de R4N4R4M4 !
Neumann: De rien
R4N4R4M4: ;) merci nib
BlaiseEbuth: Parceque c'est le seul qui a fait plus que répondre à ta question. Et il est bien gentil. Si tu veux une réponse satisfaisante, pose la bonne question...
Neumann: Salé
nib: oh... ya des gens pas contents.
BlaiseEbuth: C'est toi qui te plains de la pertinence des réponses, alors je prend le temps de t'expliquer... :grin:
Neumann: Battez-vous
R4N4R4M4: C'est vrai que normalement, tu vois l'énoncé, tu essaie de comprendre les inputs, tu code un peu et tu testes, et comme ça marche pas, tu refais et au bout d'une heure t'as enfin compris...
nib: :heart_eyes:
R4N4R4M4: Du coup, d'obtenir directement la réponse, ça peut énerver certains... :D
Paikan2068: Je me sens mauvais, je reste à la 70ème place du bronze... Plus qu'à travailler pour avoir de meilleures idées la prochaine fois
R4N4R4M4: Les idées les plus simples sont souvent les meilleures
BrainSolver: Le Dead enlève un peu de brouillard de jeu. Ça évite au Pac de chercher bêtement les morts partout jusqu’à la fin de la partie.
R4N4R4M4: qui cherche les morts ?
BlaiseEbuth: Mange les
BrainSolver: Pas grand monde à mon avis.
Paikan2068: J'imagine que si tu te mets à essayer de chase un pac ennemi... Mais bon, c'est jamais optimal
R4N4R4M4: en même temps je dis ça, mais j'avais un test en bronze pour chercher les morts :D
Paikan2068: R4N4R4M4, tu as sans nul doute raison. J'étais plutôt bien parti au début, quand je me prenais pas la tête pour des bêtises
Paikan2068: et puis, je me suis laissé entrainer sur du BFS, du A*, de la collaboration
Paikan2068: Et c'était vraisemblablement un peu trop pour moi, vu que mon code reste bloqué en bronze :p
Paikan2068: Mais j'aurai appris des trucs
R4N4R4M4: On a vite fait de se mélanger les pinceaux, faut avancer idée par idée, en vérifiant bien que tout fonctionne avant d'attaquer la suivante....
WhatTrickeryIsThis: De rien Nib, j'étais pas là mais ça fait toujours plaisir
R4N4R4M4: Bref... tout l'inverse de ce que j'ai fait, c'est le bazar quoi
R4N4R4M4: exemple, j'ai une vieille fonction codée vite fait, et une nouvelle qui marche beaucoup mieux... sauf que je me suis aperçu que ma première était pas désactivée quand j'ai testé la deuxième. Et si je la désactive, la deuxième marche moins bien... :D
R4N4R4M4: Bref ça prend l'eau de partout
Paikan2068: Mon meilleur code (a priori, vu que je l'ai pas relancé, faute d'organisation avec un bon commit Git) utilisait une distance "naîve", simple différence des x et des y
R4N4R4M4: on l'a tous faite celle-là :D
Paikan2068: Et en vrai elle marche pas si mal
R4N4R4M4: ça s'explique car tu découpes la map en rectangles
R4N4R4M4: c'est pareil chez moi, les vraies distances marchent moins bien que si je découpe à la hache
R4N4R4M4: mais j'ai un flag pour activer ou pas
Paikan2068: Tu optimises aussi les recherches de chemin du coup, en évitant d'aller chercher 40 cases
Paikan2068: C'est malin le flag
Paikan2068: Plein de petits réflexes que je n'ai pas encore
R4N4R4M4: Mouais, j'ai 50 flags dans mon code, il me faudrait un RN pour tout gérer
R4N4R4M4: oui l'idée c'est de garder ce que tu as codé précédemment et de le désactiver rapidement
Paikan2068: Revenir à la simplicité! Peut-être que Kovi expliquera les grands axes qui lui ont donné la victoire
R4N4R4M4: et si t'as des paramètres à faire varier, les mettre en constantes aussi
Paikan2068: Ouais, j'avais une approche sympa sur les cases pour ça, que je voulais utiliser en A* pour optimiser mes chemins, mais bon, ça a commencé à taper les timeouts
Paikan2068: Et quand tu joues ta victoire à la capacité de ton code à pas taper le timeout, c'est jamais bon signe
R4N4R4M4: Après, ça ça dépend des langages
Paikan2068: Python ici, donc forcément relativement lent
Paikan2068: Mais bon, le top Python reste 40ème je crois, je suis 1600 et quelques, il y a de la marge :)
R4N4R4M4: Oui, la perf ne fait pas tout
Paikan2068: Les algorithmiciens disent toujours que la puissance ou le langage importent peu, tant que tu choisis la bonne manière de faire tes calculs
Paikan2068: Et ils ont clairement raison, ça revient à ce qu'on évoquait sur la simplicité
Mastard: bon 46ms pour 4 bfs... je sens que c'est pas normal xD
Mastard: ouais...
Falkor: Wouah Cool Silver enfin :p
R4N4R4M4: gg Falkor
thoip: tu ulises quoi comme identifiant?
Mastard: j'ai pris l'algo sur le net, donc ya surement moyen d'optimiser
Mastard: identifiant ? desolé je connaissais pas bfs avant, j'ai vu passer ca dans le chat du coup j'ai voulu le faire aussi haha
Falkor: Par contre en silver c'est plus trop la gagne :D
R4N4R4M4: Oui, ça fait ça :D
Falkor: faut que je commence a penser à fuir
Falkor: Courage fuyons
Alshock: @Paikan2068 je suis d'accord sur le concept mais pas sur l'application présente. en 50 ms la différence de langage finit par faire une véritable différence même avec des bons codes algorithmiquement parlant
Paikan2068: @Alshock, j'avoue ne pas avoir la maitrise nécessaire pour juger, je te fais confiance là-dessus. Et d'ailleurs, les langages du top 50 montrent bien cette tendance
Alshock: me faire confiance, c'est sans doute la pire idée que t'aies pu avoir de tout le contest ça :D
Paikan2068: Haha, faut qu'on se fasse confiance à nous-mêmes et entre nous voyons!
Paikan2068: En fin d'après-midi là, j'étais prêt à abandonner le challenge, mais finalement, je me dis que c'est simplement continuer à apprendre
Alshock: et puis il reste encore plein de temps
Paikan2068: Ouais, après je me dis que l'objectif raisonnable au point où j'en suis, c'est d'atteindre l'Argent
Alshock: presque un tiers du temps total, alors qui dit qu'on va pas finir premier ? :D
Paikan2068: Pour un premier challenge, ce sera pas si malhonnête
Alshock: le temps que je trouve l'(algo pour faire crash les serveurs CG pendant le tour de mes adversaires...
thoip: on a plus les morts en silver?
GuillaumeSD: je suis 170 en bronze, dur d'atteindre le silver ^^
Paikan2068: @GuillaumeSD, je compatis
S1L3nCe: @thoip j'ai perso
Paikan2068: Surtout j'ai l'impression d'avoir déployé plein de trucs que je connaissais pas (et que je comprends un peu mieux maintenant, donc quand même positif) pour ne pas réussir à atteindre le silver
YannDev: bon il est temps de faire un dernier push
YannDev: si je passe pas gold ce soir je ragequit
Alshock: oh non YannDev pas toi
YannDev: ah mais là
Alshock: Regarde Bob, il est passé Gold avec son IA de trois lignes
YannDev: Le pire c'est que j'ai la même ia que bob
YannDev: :')
Alshock: et moi je suis silver avec mes 750 lignes
Alshock: le génie ça yann, le génie...
YannDev: non mais je vais tenter des choses
YannDev: et si ça marche pas
YannDev: je tenterai d'autres choses
YannDev: c'est beau ce que je dis
YannDev: c'est profond
Paikan2068: L'expérience aussi, comme il le dit dans son post, il a 25 ans d'expérience
Kh4z: @Alshock 1200 lignes parce que je ny connais rien du tout en algo :no_mouth:
Alshock: mais comment je pourrai continuer à aller de l'avant moi si mon but ça n'est plus de finir devant toi ?
Paikan2068: Et c'est pour ça, faut remettre l'ouvrage sur l'établi
Paikan2068: et espérer progresser d'ici à la prochaine!
YannDev: Ah Alshock je suis sûr que tu es devant moi xD
YannDev: oui tu es devant moi
YannDev: à 60places près
Alshock: moi je vise pas si loin, j'epsère déjà progresser d'ici lundi matin, le reste on verra après
YannDev: le chal finit lundi -_-
YannDev: c'est pas dimanche minuit ?
Alshock: il reste xj12h
Alshock: pour finir à minuit c'est tendu
YannDev: ah nice
YannDev: bon bah road to gold déjà
Alshock: glod
YannDev: Oh non thoip est redescendu #600
YannDev: il hide son ia ou ça se passe comment
YannDev: il était 180 ce matin :')
Alshock: ça veut dire qu'il y a 600 gold ?
Kh4z: 354
Alshock: ah tu parles du classement silver ?
YannDev: non #600 en silver
YannDev: oui
YannDev: x)
Alshock: j'ai frôlé l'arrêt cardiaque avec tes conneries :P
YannDev: :')
YannDev: Bon étape 1: recoder ce que j'ai codé mardi
YannDev: étape 2: debuger les nouvelles features
YannDev: étape 3: découvrir des features innatendues
YannDev: étape 4: arriver gold
YannDev: étape 5: overflow et arriver platine
YannDev: légende*
Alshock: ça y est, Yann parle de platiner le legend
Colios13: pourquoi pas diam ou master ?:joy:
Nelimee: D'ailleurs question de noob: c'est combien le nombre de légendes d'habitude?
Alshock: entre 20 et 50 je dirais ? Je sais pas j'y ai jamais été pour voir
Alshock: je sous-estime sûrement là
Zorg1: tu devrais y a un bar à bière paraît il
dbdr: un excellent même
BlaiseEbuth: Farpaitement !
Nelimee: dbdr pourquoi ton IA elle timeout systématiquement? :(
egaetan: Rust
dbdr: Nelimee: https://cg.spdns.eu/wiki/FAQ
Alshock: OOC 64 legendes UTG 95 légendes Code of ice & Fire (ouais j'aime pas son acronyme à lui) : 44 légendes
BlaiseEbuth: Pas àl'ouverture
Alshock: non mais il a demandé en tout
Nelimee: Waow, mais quel est l'intérêt de compiler différemment?
dbdr: faut leur demander
Alshock: eh bien comme ça les rusters ont un hiding gratuit
Nelimee: Ouais, c'est un peu pété
Snef: dbdr ça aide pas au debug ?
Alshock: faut bien que ce langage aie aussi quelques avantages
boumagik: le cut à l'ouverture
boumagik: pour ce contest
boumagik: des avis ?
dbdr: tu peux qd meme voir les matchs en arene, c'est pas le cas d'un hider...
boumagik: (cut gold)
Bob: pika
**BlaiseEbuth lance une pokéball sur Bob
Alshock: en fait je sais même pas ce que c'est qu'un hider, c'est juste mettre une ia nulle pour qu'on puisse pas étudier ton code ?
**Bob utilise esquive
Alshock: @BlaiseEbuth la pokéball rebondit, on ne vole pas les pokémon d'un autre dresseur voyons !
Bob: Alshock: c'est ça
BlaiseEbuth: #teamrocket
Alshock: les gens du top ont vraiment des stratégies ciblées contre leurs adversaires directs ?
Bob: Alshock: à vue de nez je dirais non
R4N4R4M4: Bon c'est un début, mais voilà comment gagner une partie au premier move :D https://www.codingame.com/share-replay/463856332
Alshock: genre, c'est rentable ? je pensais qu'il fallait plutôt pougner la masse informe en dessous
Bob: faire une stratégie ciblée contre une AI précise c'est souvent un bon moyen d'être inefficace contre les autres
Alshock: lire les réponse avant de poursuivre sur les questions : je note...
Alshock: faut avoir un move très caractéristique qui permet à ton IA de switch :D
Alshock: "Ah il a crash, je reconnais là le bot d'Alshock
Zorg1: tu pourras jamais faire architecte-qui-sait-tout si t'attends les réponses à tes questions
Bob: tu veux pas un product owner non plus tant que t'y es ?
Zorg1: ah le PO
BlaiseEbuth: tout le monde connait Winny the PO
Alshock: non PO c'est Pièce d'Or dans tous les sigles du monde
Alshock: ya brevetage
Bob: comme dans Z6PO
Bob: c'est pour ça qu'il est doré
Alshock: c'est pas C3PO lui ?
BlaiseEbuth: fix ton C
Bob: Alshock: pas dans les premières itérations de la VF
dbdr: faire MOVE avec Speed en MSG, joli R4N4R4M4 :D
Alshock: ah c'est donc une série itérative
Bob: dbdr: oui je me suis fait la réflexion, ça trolle sévère
Bob: Alshock: ah ben oui pour le coup
R4N4R4M4: dbdr, ah oui j'ai pas modifié mon message
R4N4R4M4: c'est pour tromper l'adversaire :D
Bob: les premiers films ont été remixés une paire de fois
Alshock: "it's definitely a feature"
Alshock: Bob ah mais moi j'étais persuadé que Star Wars c'était une récursive sans condition d'arrêt
BlaiseEbuth: Non. le main dev a quitté le projet et on a mis un stagiaire de merde dessus à sa place...
Zorg1: bah les trois derniers du main dev ...
BlaiseEbuth: Sont moins biens que les trois premiers. Mais c'est sans communes mesure avec la bouse du stagiaire
Alshock: putain j'avais lu "la bourse du sagitaire"
Alshock: de toute évidence ce contest me fatigue
Bob: la bouse du sagittaire, c'est un épisode secret des chevaliers du zodiaque ?
YannDev: oof
leojean890: R4N4R4M4 minimiser la somme des distances j'ai déjà utilisé cette approche aussi :P mais j'avais une méthode qui coutait cher en temps d'exécution ;P
leojean890: Nelimee bah franchement l'algo hongrois je le récupère du net en fait et je lui file juste ma matrice..
Nelimee: Ouais ok tu triches quoi :p
leojean890: je le copy paste dans mon code..
leojean890: j'ai 500 lignes pour ça dans mon fichier :p
Nelimee: Je pensais qu'on n'avait pas le droit
Nelimee: Du coup j'ai fait mon propre algo
Nelimee: Un petit bruteforce intelligent, ça marche plutôt bien
R4N4R4M4: on a pas le droit d'utiliser des algos déjà existants !!! :D
R4N4R4M4: faut inventer les siens :D
YannDev: Tortue à tous
Bob: Nelimee: y a assez peu de choses auxquelles t'as réellement "pas droit"
YannDev: j'aurai une petite question svp :')
YannDev: vous gérez comment le pac qui target une pellet à une case alors qu'il speed
leojean890: c'est quoi qu'on a le droit ou non de faire exactement ? :P:p
Nelimee: Bob OK, la prochaine fois je serais un peu moins regardant alors :p
YannDev: vous prenez une direction random ?
leojean890: parce qu'en suivant ce principeje peux meme pas récupérer 10 liugnes sur stackoverflow..
leojean890: ;)
Snef: http://chat.codingame.com/pastebin/aa04b954-3cb7-41fe-bfa2-b2b6d3baa9ed
leojean890: (même principe poussé à l'extrème)
Kh4z: @YannDev et si la random case te fait revenir a ton pt de depart? :no_mouth:
R4N4R4M4: YannDev, je stocke les coordonnées et j'en cherche une autre
R4N4R4M4: en vérifiant que la deuxième est bien autorisée
YannDev: En gros tu privilégies les cases à une distance >= 2 ?
YannDev: ah non ok je vois
R4N4R4M4: plus quelques autres réglages
Snef: mon pastebin est une question c++ si quelqu'un peut m'aider
YannDev: tu regardes toutes les cases possibles
YannDev: et tu prends celle avec la plus grande valeur
YannDev: bon c'était à peu près mon idée
R4N4R4M4: Snef, ton 3ème paramètre c'est pas size plutôt ?
Bob: alors &a[0][0], à vue de nez c'est a
Bob: le 3e paramètre c'est sans doute faux ouais
leojean890: le truc vraiment interdit c'est de trop partager du code entre participants et utiliser le même ;P
YannDev: Bonjour dbdr
R4N4R4M4: sizeof(TYPE) * nombreElements
Bob: et + row * col, sauf à ce que ça soit des char, potentiellement il te manque un sizeof de quelquechose
Bob: leojean890: entre autres ouui
Zorg1: bon Automaton2000 me faut une idée géniale stp
Automaton2000: j'ai pas reussi a faire le contest
dbdr: hello YannT!
Bob: leojean890: essayer de choper le contenu des validateurs dans les puzzles d'opti
leojean890: Bob en plus ça ils le détectent j'imagine ;P
Snef: les args c'est (first,last,dest)
R4N4R4M4: tu peux aussi écrire &a[col][row] et à mon avis, le col * row est pas bon non plus
leojean890: bah ça ils sont sur github
Snef: j'ai essayé avec [col][row] => même erreur
leojean890: les valideurs
R4N4R4M4: enfin ça dépend de la permutation de ton tableau (je préfère col avant row)
Bob: leojean890: en cours de contest, j'entends
Bob: surtout le coup où ils avaient eu la grande idée de mettre du cash en prix...
R4N4R4M4: Snef, c'est ton 3ème paramètre qui n'est pas bon
R4N4R4M4: tu as la doc de "copy" ?
leojean890: Bob ah un contest d'opti ?
Bob: oui
leojean890: et récupérer pendant ce temps les valideurs ?
leojean890: ils te ban ?;P
R4N4R4M4: Ah non sorry, j'avais pas vu la doc : http://www.cplusplus.com/reference/algorithm/copy/
YannDev: Automaton2000 tu ferais quoi pour passer gold ?
Automaton2000: bonne nuit et à demain
YannDev: ...
leojean890: y'en a qui les récupèrent en spammant des tests apparemment Bob
Bob: :D
Bob: leojean890: oui en pratique y a toujours des moyens de trouver des choses si on y met assez de bonne volonté
leojean890: genre tu spam et tu vois en fct de ce qui marche ou pas si c'est ça le valideur ou pas
Bob: les protections contre les spam push viennent de là aussi
leojean890: et il parait que certains avaient été dispo puis retirés par CG
Bob: vrai aussi
Bob: sur CotR, au début on avait accès aux validateurs
leojean890: spam push en tt cas.. quand un submit est fini on peut repush direct sans pbm (pour les combats de bots)
Bob: pour du multi oui
R4N4R4M4: j'avais memcpy en tête, c'est pour ça... :(
leojean890: mais pour les optim non je sais
leojean890: j'ai spammé un algo génétique sur A*craft pour avoir le meilleur
Bob: pour spammer de l'opti afin de trouver les test cases, faut spammer carrément plus que ce qui est autorisé
Snef: R4N4R4M4 pas de soucis ^^ mais ducoup je vois vraiment pas le pb, dans tout les sites que j'ai regardé ou des gens demandent, la réponse est toujours la même et c'est ce que j'ai
leojean890: possible, is m'ont au bout de 3 demandé un captcha
leojean890: et si je force trop c'est bloqué 15 min environ
Bob: Snef, en pratique b c'est quoi ?
Snef: bool[][]
leojean890: mais comment tu fais pour spammer plus qu'autorisé ?;P
R4N4R4M4: on dirait une erreur à la déclaration du type bool
Bob: parce que si jamais c'est un const quelque chose...
Snef: par contre il est dans un objet si ça change quelque chose
Snef: Cell c c.visited // bool[][]
Bob: si l'objet est const, possible
Snef: non plus
Bob: après, la doc pointée par R4 parle d'itérateurs
Bob: je ne sais pas si c'est censé passer avec des tableaux
Snef: ouais mais pour des array faut juste l'adresse du premier et du dernier élément
Bob: bool pika[3][4];bool piku[3][4];void piko() { copy(&pika[0][0], &pika[2][3], piku);}
Bob: chez CG a priori ça compile
Bob: ah non
Bob: ça gueule pas dans l'IDE mais ça compile pas
Bob: ah ça passe avec un &piku[0][0]
LoganWlv: Est-ce que un PAC enemie c'est considéré comme un mur pour la ligne de vue :o ?
leojean890: Neumann vous les trouvez où les formules de ce genre ? :P sum(pellet_value * 0.9^d) j'avais vu le même genre dans un PM d'Agade :P en gros c'est pour gérer un amortissement au lieu d'un truc linéaire en la distance ?:P ça évolue pas avec la même allure de courbe quoi :P
leojean890: LoganWlv il me semble que non :P
S1L3nCe: Snef : https://coliru.stacked-crooked.com/a/56c1a750d461b2a7 Ça a l'air de bien fonctionner
Bob: leojean890: plus tu vas loin plus t'as de risques qu'un autre y arrive avant toi
Bob: donc c'est pas illogique ouais
R4N4R4M4: leojean890 si tu évalues tous les critères sous la forme F * C ^ P tu résouds pas mal de cas :D
Snef: S1L3nCe la meme ligne de code compile dans mon main mais pas dans mon bfs ..
leojean890: Bob, en gros ce genre d'évolution empêche + d'aller voir des pellets trop loin j'imagine que l'idée linéaire ?
Haashi: leojean, j'ai la meme heuristique et je suis tuck silver :(
Bob: leojean890: faut croire
Bob: enfin c'est ce que ça m'évoque
Bob: moi je fais tout linéaire, chuis bestial :D
leojean890: R4N4R4M4 ah ouais j'ai jamais essayé ça, je savais pas que ça avai + de potentiel que les formules linéaires
Alshock: moi qui tentait de pondérer le score d'une pellet par le ratio distance ennmi / distance moi
R4N4R4M4: C'est pour du multi agent
leojean890: Haashi ah ok, ptet avec moins de params ? genre le pellet_value en fct de l'age (idée de R4 :P)
gregballot: les timeout de l'IDE seront forcement timeout en submit ?
leojean890: Alshock c'est pas bête ratio distance ennmi / distance moi
Haashi: mais j'ai le meme chose
Haashi: :(
gregballot: Oui surement remarque, vu que la partie est jouée coté serveur
R4N4R4M4: soit tu privilégies l'élitisme et tu pousse un agent au max de ce qu'il peut faire, soit tu cherches à maximiser la perf globale
leojean890: R4N4R4M4 pour du multi agent t'utilises plus souvent ce genre de formules que pour du mono agent ?
Haashi: genre j'ai : sum des pellets*(0.97^age)*(0.9 ^distance)
Haashi: :( :(
R4N4R4M4: SI je veux rapprocher un bot de sa cible, je choisis une distance 2 plutôt que 4
leojean890: ouais la perf globale, j'ai ajouté un voronoi aussi mais sans énormément non plus le prendre ne compte
Bob: gregballot: si c'est systématique oui
R4N4R4M4: Si je veux rapprocher 2 bots de 2 cibles, et que j'ai le choix entre 2, 4 ou 4, 2 ou 3, 3 ?
gregballot: Moi je fais une exp a l'envers, genre un pellet proche vaut BEAUCOUP BEAUCOUP plus qu'un pellet plus loin
Bob: gregballot: en pratique, l'arène est même souvent moins permissive que l'IDE
gregballot: ok, merci Bob
gregballot: Pas trop jouer sur la limite alors
Bob: nope
R4N4R4M4: si tu fais somme(dist ^ P), avec P < 1 tu privilégies 3, 3, et avec P > 1, tu privilégies 4, 2
leojean890: Haashi ouais elle semble pas déconnante ton heuristique, c'est quoi qui te pourrit dans tes parties ? late game ou early ? ou te faire manger ?
leojean890: R4N4R4M4 ah uais 3,3 c'est mieux car t'arrive plus tôt
leojean890: enfin t'as fini globalement plus tot
leojean890: au lieu d'en finir 1 avant et 1 apres
leojean890: jpense que c'est mieux
R4N4R4M4: Ca dépend, sur WW y a des ranks qui passaient bien avec p < 1 et d'autres qui passaient bien avec p > 1
leojean890: ah ouais.. donc ça fait plusieurs trucs à tester en fonction de la situ quoi, c'est chaud de trouver ce qui est mieux
R4N4R4M4: des fois tu veux bloquer l'adversaire plus vite avec un pion par exemple, donc ton eval doit prendre en compte quelle situation tu traites
R4N4R4M4: Ici, j'ai 2 évals différentes en fonction de si je cherche les big pellet ou non
R4N4R4M4: mais faut que je le refasse, c'est pourri de toute façon
leojean890: ah ouais..
leojean890: moi un peu pareil, mais c'est la même eval qui les privilégie quand il y en a
leojean890: bah pareil c'est pas optimal
Haashi: leojean890 je sais pas
leojean890: genre uand tu regardes tes replays
leojean890: où tu perds
leojean890: est ce que tu as de l'avace au début ?
leojean890: avance
Haashi: enfaite un peu partout
Haashi: cette heuristique fais que des fois mes bots font du surplace
leojean890: moi en vri mon early est pas mal
leojean890: souvent j'ai 'avantage au bout de qq tours
leojean890: puis.. je me fais soit bouffer soit rattraper
leojean890: ah ouais le surplace ;o
leojean890: chaud ça
thoip: ca va etre reglé le probleme des timeouts sur la reception?
Snef: J'en ai pas eu perso
Kh4z: jamais eue non plus
Bob: jamais eu
Bob: t'as pas plutôt un bug ?
thoip: un un run de 40 batailles j'en ai presque la moitié en timeout a cause des données qui mettent trop de temps à arriver.
Bob: dit comme ça c'est surprenant
YannDev: oh mon dieu
Alshock: la question est ptêtre stupide mais t'as bien flush stderr sur un print après les inputs ?
Alshock: @YannDev Oui ?
YannDev: mon code de mardi sans bug fait top100 à 30% de run
Bob: YannDev: oui ?
YannDev: poussez moi :')
Bob: Alshock: tu veux bien codéifier avec moi ?
leojean890: YannDev les nouveaux ont des bugs ?
Haashi: leojean890
YannDev: non
YannDev: c'est mon code de mardi fix
Haashi: enfaite dans un cas ou c'est symetrique
Alshock: @Bob ça me va, tu seras le dieu qui fait des trucs, et je serai celui qu'on implore
Haashi: la position de mon pac a le plus de point
Bob: Alshock: ça joue
Bob: je suis assez doué pour la boule de feu
Alshock: ah ouais comment il s'appelait ce jeu déjà ? small machin
Alshock: où tu jouais un dieu
Bob: Populous
Bob: #vieuxCon
Zorg1: oui
Bob: qu'est-ce que c'était bien ça
leojean890: Haashi ah ouais faut modif ca :p
Bob: la joie de faire des trous pour noyer les mecs d'en face
Alshock: Oui ! exactement
Zorg1: hé hé
Bob: encore une super brainwave de Peter Molyneux
Julius2k17: haaa populous sur sega master system la révélation
Julius2k17: :D
Bob: c'était quand même une grande époque
YannDev: #70
Julius2k17: oué Generation4, Joystick, Tilt
Bob: go YannDev go
Haashi: gg yanndev
YannDev: je me sens pousser des ailes
Bob: fais-nous une Bobette
Bob: sois une licorne
YannDev: braquage en cours
Bob: j'ai mis la télé pour faire un fond, je me souvenais pas que c'était aussi nul
leojean890: YannDev bientôt gold !
Bob: heureusement qu'il y a NHK World
YannDev: j'espère
YannDev: ah merde
YannDev: #90
YannDev: j'ai pris des défaites contre greg
YannDev: pff
leojean890: bon moi jsuis entrain de chuter, jsuis 252
leojean890: ..
YannDev: t'es gold ça va
leojean890: 22h après mon dernier submit
leojean890: ouais mais faut que j'improve
YannDev: ouais
Julius2k17: chaud le passage en gold je trouve
leojean890: jpense que ça va être mort legend à moins d'un truc de ouf en +
Bob: leojean890: si tu veux legend faut viser top 20
leojean890: Bob je sais, c'est quasi mort mdr
leojean890: OOC j'y croyais +
Alshock: putain ce rank porte bien son nom quand même
leojean890: mon code avait dépssé le LO min du boss:p
leojean890: dépassé
leojean890: maislà je suis trop loin
Alshock: élo c'est pas un acronyme
leojean890: il me faut un changement radical
Julius2k17: les pacs bloqueurs
Bob: -3v
Alshock: @Julius2k17 encore un coup des pacs universitaires anarchistes ç
Bob: switch hulk
Alshock: ça veut dire quoi -3v en fait ?
Bob: c'est l'heuristique magique de CSB
Alshock: ? C'pour prendre les virages ?
Bob: oui
Bob: oui
Julius2k17: faut drifter dans CSB
YannDev: bon bah #93
Zorg1: qqn pleure qu'il progresse pas dans CSB ?
Zorg1: hop "Fix ton bot, -3vel" et zou
Bob: tu vises le checkpoint moins 3 fois ta vitesse du moment
Alshock: mon code faisait qu'aller vers le prochain cp, son seul haut fait c'était d'enregistrer les checkponits et il est monté glod
Alshock: j'y ai jamais retouché
Bob: eh ben ajoute -3v
Bob: juste pour voir
Alshock: ouais ça a l'air incroyable, mais vous l'avez sorti d'où ce -3v
Julius2k17: apres des que tu as un bon bloqueur enf ace c cuit
Alshock: vous avez fait des vrais calculs ou quelqu'un a tenté des trucs au pif et ça ça marchait pas mal ?
Bob: c'est une heuristique
Alshock: les bloqueurs en gold on sait pas encore ce que c'est
BlaiseEbuth: Tu veux pas savoir
Alshock: enfin à l'époque où j'y suis monté en tout cas
Zorg1: -3v je ne sais pas d'où ça vient
YannDev: bon je tente de submit une heuristique douteuse
Julius2k17: moi c un bon blocker qui m'a bien fait up
Bob: je me souviens d'un coup où on a essayé de faire gober à quelqu'un que ça marchait encore mieux avec pi
Julius2k17: et le drift quand t'arrrives sur un cp
Bob: bon je pense qu'à cette heure on a bien mérité une mousee
Julius2k17: si ton vecteur vitesse * friction t'envoie toucher le cp, tu vises le suivant
YannDev: #715 avec une heuristique douteuse en plus
YannDev: :')
Bob: nice
Bob: gg
YannDev: c'était une idée de thoip
YannDev: mais du coup ça marche pas trop bien
YannDev: ah #580
Bob: tu prends des idées d'un gars qui n'arrive même pas à recevoir tous les inputs
Bob: #trustLaLife
YannDev: bah on sait jamais
YannDev: l'idée pouvait mazrcher
YannDev: il a fait un push #150 silver comme ça :')
Zorg1: je prends une random idée d'un random gars ça peut marcher on sait jamais ^^
leojean890: et ton code 90 tu avais pas foi pour te faire pousser ?!:P
Bob: bon note moi j'ai bien fait un holdup
YannDev: bah faut que 90 personnes se fassent pousser
Bob: sur un malentendu
leojean890: 90eme c un peu chaud
leojean890: :p
YannDev: ouais
leojean890: sauf si tu les doubles :p
Alshock: Ah mais tous les inputs ont changé
leojean890: avec un winrate de ouf
Bob: on a déjà bien vu toute une ligue passer au-dessus :rofl:
YannDev: t'es passé gold ?
Alshock: c'est de la triche maintenant on sait où sont les cp
Alshock: non je suis allé voir csb
leojean890: genre jme suis bien fait pousser de 10eme ici
leojean890: enfin 2eme puis 10 puis 1
leojean890: silver 2 gold
Bob: ouais mais top 10 vers 1 ça va
Bob: 90 vers 1 tu rêves en couleurs
leojean890: ouais 90 je concois c chaud xd
leojean890: :P:p
YannDev: je suis sur que je peux améliorer des trucs
YannDev: mais je sais pas quoi
leojean890: mais en même temps j'étais 2eme juste avant
leojean890: ..
Bob: après des fois t'es 2e à 3 points du boss
Bob: là tu t'assieds et tu pleures
leojean890: utilise les formules magiques de Neumann et R4N4R4M4 avec des 0.9^d*pellet_value:P
YannDev: c'est quoi d :')
Bob: la distance ?
leojean890: distance au pellet
Bob: (au hasard ou presque)
YannDev: ça fonctionne vraiment ?
leojean890: ouais 3 points du boss c dur
leojean890: :p
YannDev: https://www.codingame.com/share-replay/463918652 genre là je voispas pk je perds
leojean890: ça fonctionne pour eux ils sont dans le top 70:P
leojean890: après faut le faire bien quoi:P
Nelimee: YannDev j'ai essayé toute la soirée différentes formules et le 0.9**d n'est pas miraculeux
YannDev: ah x)
leojean890: bah faut le faire bien
leojean890: ça suffit pas de balancer ça:p
YannDev: mon bot a une bonne structure en vrai
Alshock: -x+2*y +z**k//2
Bob: YannDev : frame 15
Alshock: sui vous faites ça c'est top 1 direct :P
Bob: t'as deux pacs qui bouffent du vide pendant que ton adversaire se gorette
YannDev: ah
leojean890: Alshock ??-x+2*y +z**k//2
leojean890: :p
Alshock: la goretisation des adversaire est un phénomène généralement observé à l'approche d'une rediffusion du voyage de chihiro à la télévision
YannDev: bizarre ça
YannDev: je dois avoir des bugs...
Bob: YannDev : d'une manière générale tu passes pas mal de temps dans des couloirs vides
Bob: mais j'ai le même genre de souci
Alshock: @leojean890 c'est un - unaire
YannDev: normalement ça doit target le pellet
Mazelcop: YannDev, le mieux c'est de pas target un seul pellet mais plusieurs
Alshock: Ah ? Perso je target un path
YannDev: c'est à dire Mazel?
Alshock: toi tu target plutôt un groupe ?
Julius2k17: je bosse la dessus aussi
Mazelcop: une bonne position, c'est un position où t'as plein de pellet autour de toi
YannDev: oui c'était l'idée de thoip
leojean890: Alshock - unaire pour en faire quoi ?:P
YannDev: mais ça c'est montré foireux...
Julius2k17: éviter que plusieurs pacs tapent les mm path
leojean890: Mazelcop en effet :P
leojean890: je calcule le nb de pellets mangeables d'un coup
Alshock: @leojean890 pour faire un calcul débile avec des apramètres inexistants et décréter que c'est du génie
Bob: YannDev: ça dépend sans doute aussi de la manière dont tu le codes
leojean890: Alshock ah ok xD:p
YannDev: moi j'ai check le nombre de voisins d'une case
Alshock: YannDev le problème est sûrement entre la chaise et le clavier :P
YannDev: sinon je regarde la composante connexe de pellets
leojean890: Bob ça dépend tjr de ça
leojean890: Mazelcop gg d'ailleurs
Mazelcop: thx :)
YannDev: Mazelcop c'est de ça dont tu parlais?
Bob: tu peux avoir une idée bonne dans l'absolu et ne pas du tout réussir à la coder comme il faut
YannDev: aller sur la plus grande composante connexe de pellets
Alshock: @YannDev le nombre autour c'est un peu compliqué à gérer, moi je te conseille plutôt de check à quel point ton trajet est bien garni
Mazelcop: composante connexe ça a l'air un peu trop compliqué, faut viser simple
Zorg1: bon ben moi j'y comprends rien à ce contest :(
YannDev: donc tu fais quoi mazel?
leojean890: des idées sont bonnes theoriquement mais dures à mettre en pratique
Bob: Zorg1 t'es pas trop mal classé pour quelqu'un qui capte rien
Haashi: Zorg1 on est deux :(
Mazelcop: ah, ça je peux pas trop dire quand même :p
Alshock: aaaaaah putain ! mais le but en fait c'est de manger des pellets !
YannDev: bah une composante connexe c'est facile à coder
Zorg1: bob : bah parfois c'est 160, une autre fois c'est 300+
Mazelcop: oui mais ça a pas forcément de sens dans ce contexte
Zorg1: c'est bizarre
Bob: ah oui
Bob: c'est comme ça que j'ai fait mon hold up
leojean890: les submits sont random un peu pour les non-top
YannDev: bon je go dormir
Alshock: pour les tops aussi, mais à leur échelle
YannDev: j'aurai pê des idées
leojean890: bn
YannDev: ++
Alshock: gn
Zorg1: bn
YannDev: merde j'aurai pas du resubmit
Zorg1: famous last words
Bob: :D
Haashi: moi pour essayer de justifier le "une pos ou y a plein de pellet c'est bien"
Haashi: je pars de chaque pos, et je diffuse sa valeur progressivement
Haashi: mais ca favorise beaucoup trop les cases a 4 et 3 voisins
Mazelcop: ouep, faut compenser ça
Haashi: ce qui fait que mon bot souvent il reste dedans en mode "mais elle est bien cette pos, j'ai 3 pellets a coté, pourquoi je bougerai"
Julius2k17: :)
leojean890: une simu DFS
Haashi: Mazelcop, une idée pour compenser justement ?
leojean890: quand le pellet est mangé tu le retires
Haashi: genre une valeur négative pour les cases qui ont rien ?
leojean890: et tu vois où aller :P
Mazelcop: ben si t'as 4 voisins, tu divise par 4
Haashi: alors j'ai essayé aussi ca
bouajajais: pourquoi un MOVE 0 7 7|MOVE 1 3 13 a comme résultat Pac 0 moved to (7, 8) et Pac 1 moved to (3, 12)?
leojean890: 1 DFS par pac
Bob: bouajajais: parce que le move fait bouger ton pac vers la cible voulue
Alshock: @bouajajais 3 13 doit être une case invalide
Alshock: un mur quoi
Bob: il le téléporte pas dessus
Zorg1: 1 BFS par pac chez moi
Julius2k17: moi g fait un bfs pour maitriser les déplacements en mode speed ou pas
leojean890: Zorg1 pareil
leojean890: mais jdevrais le faire en mode simu
Alshock: ah oui c'est to pas toward mb
bouajajais: il n'y a pas de mur. je lui dis d'avancer vers la case d'en haut il part vers celle du dessous
leojean890: cad enlever les pastilles et voir sur N tours où ils vont :P
leojean890: la récolte totale
Zorg1: bof pas super motivé pour faire une simu
leojean890: chaud
leojean890: j'ai commencé moi
Bob: bouajajais: ça dépend d'où tu es par rapport à ta destination aussi
Bob: montre voir un replay, ça sera plus simple
leojean890: mais bon jvais surement favoriser d'autres pistes
Julius2k17: moi j'essaye la piste de plusieurs path par pac et virer les path trop similaires
GuillaumeSD: vous etes en quelle div ?
Julius2k17: je cherche juste comment m'y prendre
Julius2k17: Silver
Bob: gold
leojean890: 262/368 gold
leojean890: la chute
bouajajais: https://www.codingame.com/replay/463930565
bouajajais: il suffit de mettre de pause de voir la commande et le déplacement suivant qui ne correspond pas
Razielwar: leojean890 le tout c de prendre un bon rebond en bas pour mieux remonter :p
leojean890: Razielwar j'ai pas ce qui faut pour remonter là :s
Razielwar: il est galère ce jeu ^^
Zorg1: pas faux
bouajajais: en sortie d'erreur j'ai mis les voisins de chaque pac
leojean890: todo : "elaguer les potentiels pellets en fonction des posituions supposées des ennemis"
leojean890: Razielwar compliqué à faire bien mon todo
Razielwar: moi aussi je l'ai en todo celui là...
leojean890: en gros deviner où il va
leojean890: déjà ça je le fais pour l'esquiver
leojean890: mais comme c'est de l'incertain..
leojean890: Mazelcop disait qu'ils s'en sortent bien pour localiser au top ;P
leojean890: mais toi t'es au top aussi;p
Razielwar: plus maintenant
leojean890: comme c'est de l'incertain je peux esquiver rapidement
Razielwar: faut justement que je bosse ça pour revenir
Razielwar: là je suis 77
leojean890: sur 2 3 tours
leojean890: ah ok mais comment ça se fait que t'as autant baissé
leojean890: comme c'est de l'incertain je peux esquiver rapidement MAIS pas élaguer les pellets
788361: bouajajais: ben t'es en 7 9 tu veux aller en 7 7 il passe par 7 8
Razielwar: bah les autres ce sont améliorés ^^ et pas moi on dirait
Bob: de même l'autre en 3 11 pour aller en 3 13 il passe par 3 12
Razielwar: mais je vais pas me laisser faire
leojean890: Razielwar arf pareil que moi mais je suis loin derrière ;)
leojean890: j'étais dans le top 80 il y a pas si lgtps xD
Razielwar: allez j'y retourne j'ai gavé de taf là :)
leojean890: et now ......
Bob: mais c'est mignon ce petit pas de deux
Razielwar: courage leojean
leojean890: thanks :P
leojean890: mais bon c'est limité là:p
bouajajais: je suis en 7 8 et je veux aller en 7 7 il passe en 7 9
bouajajais: lorsque je suis en 7 9 je veux aller en 7 10 mais il passe en 7 8
Bob: non
Bob: premier tour tu pars de 7 7, tu demandes 7 9 il va en 7 8
Bob: deuxième tour tu es en 7 8 et tu demandes 7 10 donc il retourne en 7 9
Bob: après tu alternes 7 7 et 7 10
Bob: l'autre c'est pareil il alterne entre 4 11 et 3 13
thoip: Bob effectivement j'avais un probleme. mais il y a une heure c'était des timeout dut au serveur.
Bob: stoi le timeout
Vry: :upside_down:
Bob: bon j'ai pas de vraie bonne idée et je suis arrivé en gold alors je vais sans doute faire autre chose de mon week-end
Bob: na
YannT: je pense que je vais quand même essayer de taper légende pour la forme
YannT: mais sinon pareil :p
Bob: je sais que je suis pas très bon sur les parcours de ce genre
Bob: hypersonic c'était la même galère
Vry: Moi je vais enfin pouvoir commencer à "bosser" sur le contest ce week-end ... je peux prendre le relais ! :D
YannT: bah, je suis pas mal avec un DFS bateau
Sissiimperatice: si vous avez des idées pour passer en gold je suis preneur ^^ bloqué dans le top 30 et la moindre tentative d'amélioration me fait baisser vers les 200 ...
YannT: quelques fioritures et ça fera légende
YannT: (en tout cas c'est le projet)
Dadouche: tu arrives a faire un DFS à combien de profondeur ?
YannT: Sissiimperatice: fait pas de switch et chasse pas les ennemis
YannT: => gold
Vry: Au début j'avais tenté de reprendre mon DFS de OoC mais j'ai dû rater un truc ...
YannT: (par contre, full speed)
Julius2k17: pac tire pas de torpille
Bob: ça ou du cul au push
Sissiimperatice: YannT c'est si facile ?
YannT: en gros oui
Vry: ... mais marchait pas donc je suis avec un FF mais il dot manquer les bonnes fioritures ! :p
YannT: DFS + speed + te collisionne pas toi même = gold
Sissiimperatice: bon je suis pas loin
YannT: (et chope les super pelets aussi)
Vry: Je vais repartir comme ça moi aussi parce que de toute façon je ne vais pas avoir le temps de faire la simu. + algo de recherche ...
Bob: mais quand tu dis DFS, c'est pour déterminer quoi ?
YannT: le chemin pour ramasser le max pellets
Julius2k17: le chemin le plus long que tu puisses recolter normalement
Haashi: YannT, avec ou sans demi tour ?
Bob: hmm ok
Vry: Un peu comme sur OoC où on voulait le plus long chemin sans surface
Julius2k17: yep
YannT: moi j'ai avec demi tour,mais j'ai un todo pour intégrer un malus de demi tour
YannT: cela dit clairement c'es pas critique
YannT: DFS pour chemin max scoring selon ta connaissance des pellets, c'est gold
Haashi: et tu enleves les pellets au fur et a mesure ?
YannT: ben oui?
Haashi: ou tu tries par pac ID et tu esperes que ca fasse une bonne solution ?
YannT: pas compris la question
Haashi: Tu fais une DFS sur chacun de tes pacs ?
YannT: yep
YannT: mais avec des micmacs pour éviter les collisions
Haashi: Donc ma question est : Est ce que tu trouves un chemin optimal pour un pac, t'enleves ses pellets, puis tu calcules un chemin pour le suivant etc etc
WhatTrickeryIsThis: c'est ce que je fais
Haashi: ou alors si tu cherches un chemin pour chaque tu regardes celui qui rapporte le plus
YannT: (c'est ma solution service minimum là hein, ça challengera pas le top, ça fera p'tet cul de légende)
WhatTrickeryIsThis: j'implémente les swaps par contre là
Haashi: si ca peut me permettre de passer gold ca me suffira amplement
YannT: Haashi: même pas
YannT: mais j'ai un malus de rapprochement entre pacs
Haashi: d'acc tu vas vraiment au plus simple
Haashi: merci
YannT: ça les encourage à prendre des chemins différents
Haashi: bah deja le fait d'enlever les pellets du chemin pris par un autre
Haashi: ca les incite un peu
YannT: self-collision = gros malus, du coup il va sur un autre chemin avec plein de pellets
Alshock: yes du timeout tour 2 comme on adore
Alshock: plus qu'à trouver où je boucle infinie
WhatTrickeryIsThis: v=1 tout le temps pour simplifier
YannT: -3v plutôt non?
Alshock: d'ailleurs j'ai mis -3v mon IA a pris 2000 places
Alshock: maintenant après ce contest je lui apprendrai à ne pas se tamponner elle-même, ça pourrait l'aider
Zorg1: c'est du détail ça
Alshock: Ah j'ai rien dit, c'est 3000 places gagnées en fait ^^
Alshock: je soupçonne le gold d'être hautement constitué d'IA qui n'ont pas les bons inputs comme la mienne
Zorg1: oui le cimetière gold
Zorg1: ceux qui ont eu la flemme de refaire leur bot
Alshock: j'miagine le cimetière brillant de mille feux sur une falaise au bord de la mer
Vry: Mon bot est dans le cimetière gold depuis deux ans avec -3v
Magus: https://www.codingame.com/share-replay/463959132
Magus: ah ouai génial
Magus: visiblement avec Mazelcop on a tous les 2 codés un truc pour pas aller dans les culs de sac
Magus: résultat nos 2 IA sont afk
Alshock: xD magnifique
Spifflejedi: ahha j'alalis poser la question
Alshock: mais genre afk afk quoi
Spifflejedi: évite rles culs de sac en debut de partie c'est plutot payant ou pas?
Magus: par contre je comprend pas ... comment ça se fait que son pac se laisse juste buter ?
Magus: il bouge pas, je lui fonce dessus :/
WhatTrickeryIsThis: une belle victoire en tout cas
YannT: submit Magus au lieu de faire le pleutre là
Alshock: à mon avis il tente de trouver une route de sortie sans entrer dans un cul de sac
Alshock: et comme il est déjà dans un cul de sac yen a pas du coup il reste sur place
Magus: YannT: le code que j'ai dans l'IDE est pas mieux que celui dans l'arèn
YannT: le process c'est que tu submit une IA pourrie, et puis après tu améliores
Magus: je cherche d'ailleurs pourquoi il se débrouille relativement bien contre Mazelcop, mais qu'il est aussi pourri contre le reste du monde
YannT: tu testes contre le #1 et ton IA est pourrie? :p
YannT: lets go
YannT: bouton jaune
Alshock: j'azime pas le ricard
Alshock: -z
Bob: moi j'ai plus simple
Bob: t'as une IA ? bouton jaune
YannT: personne n'est parfait
YannT: fait pas ton ThomasNicoullaud Magus
YannT: (on notera que son highlight autocomplete, ce qui veut dire qu'il est présent)
YannT: (avec son smurf là)
Magus: bah j'aimerais quand même régler cette histoire d'afk en fin de partie avant de submit
YannT: (hoooonte)
Mazelcop: moi aussi Magus, moi aussi...
Magus: mais je suis surpris que Mazelcop est exactement le même souci que moi :D
Magus: *ait
YannT: bah il bouton jaune lui
YannT: ce qui est bien
YannT: parce que quand plein de gens bouton jaune, ça fait un contest
YannT: sinon ça fait rien et c'est chiant
nmahoude: :)
Alshock: @Magus tu peux pas faire un fallback si t'as pas de chemin ?
gregballot: le mode "drift away"
Alshock: @YannT promis dès que je timeout plus je bouton jaune jusqu'au gold
YannT: that's the spirit!
Magus: Alshock: en fait je sais pas trop ce qui fait cet afk. parce que j'ai bien un malus sur les culs de sac. Mais logiquement quand y'a plus que ça bah ... mon IA est censé aller chercher les culs de sacs :/
YannT: fix a bug, bouton jaune
YannT: intégration continue les gars
YannT: on est agile ou on l'est pas hein
gregballot: Continuous delivery, bouton jaune a chaque \n
Alshock: et un commit par submit, pas plus j'imagine ?
Alshock: Magus: ton malus est absolu ou proprtionnel ?
YannT: oui sinon le PO il râle que t'as tout cassé le staging après
Alshock: J'essaye de vori si ça peut partir en scoring négatif
gregballot: C'est pour ca qu'on apprécie les canary-release
Magus: Alshock: mon malus est absolue, mais mon score aussi :D
Alshock: canaryt-release? C'est des releases au bouton jaune ?
gregballot: haha non mais bien tenté
Alshock: Magus: Bah du coup tu peux pas te retrouver avec un score négatif ?
Magus: non
YannT: c'est release pour un nombre réduit de cobayes ;)
Magus: une pastille c'est 1, une pastille dans un cul de sac c'est 0.5
Alshock: étonnant, on dirait qu'un silver ne peut pas débugger ton code à l'instinct
Magus: donc que ça préfère prendre les pastilles à 1 c'est normal
Alshock: ah oui donc c'est ce que j'appelle "proportionnel"
Magus: mais quand y'a que ça à prendre, bah c'est censer les prendre
gregballot: Une Beta privée ephemere, pour mettre des mots swag dessus
YannT: ouais, ou sinon release pour cobayes sans les mots swagv
YannT: -v
Alshock: c'est swag un cobbaye
gregballot: t'as activé l'option verbose, il faut parler maintenant
YannT: j'ai déjà donné les secrets de mon algo
Magus: Mazelcop: mais tu simules pas l'adversaire non plus ? oO
Alshock: c'est pas nous qui sommes censés devenir insupportables et déclarer tous nos warnings en 300 lignes ?
Magus: https://www.codingame.com/share-replay/463967633
YannT: c'est que j'ai rien codé de fashion :p
Magus: tu te suicides carrément dans un cul de sac devant moi oO
gregballot: bah moi, toujours entêté avec mon knapsack qui timeout
YannT: Magus:; bouton jauuuune
Mazelcop: je simule l'adversaire mais j'ai changé pas mal de trucs ajd
gregballot: jvai tellement le virer et faire autre chose
Alshock: le pellet ciseau qui vit sa MEILLEURE VIE
Alshock: ça se voit sur son visage
Mazelcop: donc il mon IA fait un peu n'importe quoi des fois
Magus: par contre on notera les 2 pacs rock qui sont motivés
Mazelcop: ah ben oui, faut rien lacher
gregballot: oh putain l'opti fonctionne jcrois bien
Magus: wow j'ai trouvé pourquoi j'afk à la fin, lol
Bob: j'adore ces débuts de push où j'ai deux victoires contre des IA du top 50 et la lose contre tout le reste du board
egaetan: ia random
egaetan: random win/loose
Bob: clair
egaetan: spam submit Bob
Bob: arrête c'est comme ça que je suis passé gold
WhatTrickeryIsThis: mon dernier push je suis monté top 20 jusqu'à 10% et à 11% j'étais 200em
egaetan: avec beaucoup de chance, ç apeut faire top10
Bob: #surUnMalentendu
YannT: #goboutonjaunemagus
WhatTrickeryIsThis: on verra demain soir à 18h la chance
Magus: YannT: j'ai déjà submit y'a un petit moment
Zorg1: YannT mais laisse donc Magus hidder en paix !
Magus: mais elle va pas aller loin cet IA
Magus: je serais étonné qu'elle fasse top 100
YannT: j'aime pas les hiders
Zorg1: (il a pê besoin d'un écran incurvé, va savoir)
YannT: ça tue le côté festif du contest
Zorg1: je me demande si dapo va débarquer Dimanche
YannT: et en plus c'est mégalo
Zorg1: le prix en vaut il la chandelle ?
YannT: 'gnagna je dois utiliser un smurf parceque je suis trop une célébrité on va se demander pourquoi je suis que silver"
WhatTrickeryIsThis: vous allez bientôt faire la fête avec ma nouvel IA toute refaite et pas encore testée ni debuggée
YannT: gros ego quand même
WhatTrickeryIsThis: je push dans 10 min et je vais dodo
YannT: #goboutonjaune
WhatTrickeryIsThis: je paries que y à pas de bugs
Zorg1: vu qu'on parle de célébrité, mais où est donc Beber ?
Zorg1: pas trop son genre de hider
WhatTrickeryIsThis: il a vu le nombre de lignes dans le code par défaut et il a fuit
YannT: #61ème avec ~250 lignes à battre :p
Razielwar: tu le fais en codeGolf yannt? :p
YannT: service minimum
YannT: je suis cramé des 4 semaines de OOC :p
Razielwar: lol
Razielwar: moi j'avais fait que 2 semaines ooc
YannT: je joue à voir ou je peux aller sans forcer :D
WhatTrickeryIsThis: comment ça s'appele quand une fonction a une variable qui n'est jamais utilisée ?
Razielwar: dead code
YannT: WhatTrickeryIsThis: enterprise code
WhatTrickeryIsThis: dead code c'est ce qui traine après return
Zorg1: c'est vrai que les classes Java du boulot c'est 3000 lignes, 60 fonctions, et 20 réellement utilisées :D
YannT: et un commentaire "// TODO: Remove" sur une des rares méthodes utilisée aussi
Gh0stm4chine: ça va je suis pas le seul, ça me rassure
Zorg1: et une ou deux fonctions totalement mis en commentaire car le gars ne sait pas utiliser une gestion de version
Bob: WhatTrickeryIsThis: dead code c'est tout ce qui n'est jamais utilisé
gregballot: un code apres un return c'est du code mort, mais du code mort c'est pas toujours que ca, c'est aussi des fonctions jamais appelées, des classes jamais utilisées etc..
WhatTrickeryIsThis: une variable c'est pas du code . Si?
Bob: j'ai un mal de chien à faire comprendre à mon chef que virer le code mort au moment où il meurt c'est pas du nettoyage prématuré
Bob: si
gregballot: mdr debat tres interessant, je pencherais pour dire que sur le principe oui, mais bon faut pas deconner
Zorg1: en plus c'est marrant en Java avec l'introspection tu sais jamais si une fonction public jamais appelé n'est vraiment jamais appelée :D
Magus: bon alors j'ai 2 raisons qui me font faire des afks ... une feature et un gros bug :(
Magus: va savoir lequel est le pire
Bob: gregballot: tout ce qui n'est pas supprimé au moment où ça meurt reste
Razielwar: ah moi je dégage j'en ai trop marre du code mort c horrible le temps que ça a pu me faire perdre!
Razielwar: ya une gconf pour ça si jamais faut récupérer
Zorg1: transforme le bug en feature #astuce
Bob: tu peux être certain que deux semaines plus tard plus personne ne sait pourquoi c'est là
leojean890: sympa les petits tests qui déclassent vers 360/371 mdr
JBM: vous etes payes a la ligne, sans doute
Bob: et comme ce n'est plus utilisé plus personne n'a à aller à y mettre les mains
Magus: nan le bug c'est que je crois que je prends une action de trop pour mes simus. Je sais pas trop ce que ça fait, mais à la fin de ma simu à la dernière profondeur je fais une action de trop
Magus: pour l'éval ça doit faire des choses bizarres
Zorg1: et que tu vas passer une journée à corriger du bug mort avant de t'en rendre compte :p
Bob: sauf le jour où il faut porter le code parce que upgrade de framework ou autre
YannT: "je le supprime pas ça pourra resservir"
WhatTrickeryIsThis: xD
Bob: et là tu passes une heure à ramer pour porter du code mort
gregballot: bon j'ai submit avec mon opti de la mort
Bob: et si t'es motivé t'en passes une de plus à constater qu'il est mort
gregballot: Je suis sur je vais perdre des places lol
WhatTrickeryIsThis: putin ça y est je crois je vais pouvoir pusher
YannT: #goboutonjaune!
Bob: et une de rab à virer tout ce qu'il entraîne dans son sillage et qui est mort aussi
YannT: (trending)
JBM: a mort le code mort, donc?
Bob: et comme dit YannT, pour "ça pourrait servir un jour", on a (en général) la bonne idée d'avoir du version control
Bob: donc on peut toujours aller le repiocher
Bob: je préfère garder dans un coin de ma tête "ah ouais on a fait ça à une époque" que "ah ouais, on a cessé d'appeler ce code à une époque"
Bob: donc JBM ouais à mort le code mort
Bob: le code mort-né ("j'en ai pas besoin là mais c'est pour plus tard") est, intrinsèquement, du code mort aussi
YannT: http://chat.codingame.com/pastebin/b70f94e2-813e-476d-ab8a-c17bbb869702
JBM: t'as pas besoin de le garder dans un coin de ta tete
JBM: c'est greppable dans le commit
gregballot: haha la fameuse mauvaise scalabilité
Magus: de toutes façons on connait tous ce fameux commentaire
Magus: // temporary code
Magus: git blame => commit de 2005
gregballot: Bon bah -200 places avec ma SUPER Opti loooool
Valkilaen: Pour le Spring Challenge 2020 Un pac mort reste à son emplacement ? Et continue de bloquer le passage ?
J'viens de passer Silver, j'ai debloqué c'te feature, et indeed tout mon code bug (déplacer les morts c'est pas ouf)
Bob: j'ai un copain il fait ça avec sa vie ("j'achète ça pour plus tard")
WhatTrickeryIsThis: du code mort en java ça tourne pas
WhatTrickeryIsThis: sauf les truc unused
Bob: Valkilaen: non un pac mort est mort
JBM: j'en avais laisse un, avec date dans le code
Bob: tu le vois encore dans les input mais il n'est plus en jeu
WhatTrickeryIsThis: AU PUTIN JE PUSH
Valkilaen: OK ça marche
YannT: WhatTrickeryIsThis: @Deprecated
WhatTrickeryIsThis: vas y je perd en masse
WhatTrickeryIsThis: :D
YannT: (500 uses dans la codebase)
Bob: du coup le copain ben il vit au milieu des boîtes des trucs qu'il achète compulsivement et qu'il n'a jamais le temps d'utiliser
JBM: "ceci est crade, mais les responsables de ca ont rien fait--j'ecris ceci le x/y/2006 et c'est prevu pour etre temporaire --- JBM"
JBM: il y a etait toujours l'annee derniere
JBM: quel malheur, ce code crade qui a le mauvais gout de marcher
Bob: on a du code dégueu dans notre base qui doit avoir pas loin de 30 ans
gregballot: ca c'est du vrai legacy
Bob: et pour le coup, des trucs pas morts
Zorg1: c'est le principe du code "historique" ça, crade mais ça marche
Bob: le genre que si tu le touches, le soft pète de partout
gregballot: Surtout t'as peur de toucher haha
Zorg1: avec "// temporaire, a proprifier"
Bob: fear driven development
gregballot: C'est un peu le covid19 des projets tech le legacy qui a 30 ans
leojean890: ça fait penser à mon code de spring challenge ou OOC ça;)
leojean890: tout sale
gregballot: distanciation
Bob: on a une paire de zones vraiment basses dans les utils, on sait d'expérience que chaque fois qu'on a essayé d'y toucher en se croyant plus malins que les précédents qui avaient essayé, on a dû reverter le commit
Zorg1: oui mais on te donne pas de masque quand tu dois bosser dessus ....
BlaiseEbuth: C'est une forme de gamification: Le projet jenga. Le premier qui casse tout a perdu... :grin:
Zorg1: "tu as gagné le droit de te faire crucifier par les clients méchants"
Bob: bref le code mort c'est un peu le white walker du code
Bob: c'est dangereux et faut le détruire par le feu
Magus: putain j'ai compris pourquoi mon IA a la phobie des culs de sacs ><
Zorg1: un problème lors de sa petite enfance ?
Magus: bordel Alshock a raison
Alshock: xD alors ça c'est incongru
Magus: je met un score de -0.5 aux cases de cul de sac. Donc une case cul de sac avec une pastille vaut 0.5, mais une case cul de sac sans pastille vaut -0.5. Mon IA veut bien rentrer dans un cul de sac mais veut pas ressortir
Magus: alors elle afk devant parce que résultat mon AG renvoie une suite d'action du genre WAIT WAIT MOVE MOVE MOVE pour qu'elle arrive pile poil à la fin du cul de sac
YannT: j'ai solutionné ce genre de problème en forçant un move perso :p
WhatTrickeryIsThis: met l'amort
Magus: la solution c'est juste de pas faire -0.5 sur une cellule qui n'a pas de pastille
YannT: si t'es obligé de bouger, çia règle tout les soucis du genre "la case suivante me plait pas"
WhatTrickeryIsThis: ah nan même pas
Zorg1: faudrait que je perde l'habitude de tout coder dans le main() en contest
leojean890: mdr ah ben on est 2 à coder sale hehe:p
Gh0stm4chine: 3
leojean890: moi je code 50% du code dans le main et 50% dans des fcts
YannT: y'a 0.01% de situations ou la bonne solution est de pas bouger en fait
leojean890: xD
Bob: ça m'a pris une paire d'années avant d'arrêter de le faire :)
Magus: YannT: j'aime pas trop forcer le mouvement. Parce que le wait peut servir quand 2 pacs arrivent dans le même croisemen,t
leojean890: sauf dans certains sujets où c'est plus propre
Magus: tu fais wait pour laisser passer l'autre
Magus: si tu forces le mouvement t'as un pac qui fait un aller/retour inutile
leojean890: mais OOC ou PAC 50% dans le main
Bob: Magus: pour ça j'ai codé le wait dans ma fonction "va là"
Magus: mais ici le problème a une solution
YannT: Magus: typiquement dans ces situatiions la bonne soluition est pas de wait Magusis d'aller ailleurs
YannT: mais*
leojean890: 300 lignes dans mn eval
Magus: Bob: j'ai pas de fonction "va la" vu que j'ai une simu :D
Magus: j'ai juste une eval
leojean890: jme demande bien quel charabia j'ai mis là dedans xd
YannT: idem, #teameval*sanssimu
Bob: non mais forcément si tu haxx
YannT: mince, j'ai raté mon hashtag :(
Magus: Bob: genre j'ai déjà codé des heuristiques
Magus: enfin la je vais être obligé d'en coder, parce que pour gérer le FoW ça va être compliquié
Bob: c'est ce que je dis, tu haxx :p
Magus: et en plus mon dummy pour l'adversaire était pas branché
Magus: lol
Magus: #apprendàcoder
WhatTrickeryIsThis: encore une nouvelle ia fiasco
WhatTrickeryIsThis: (╯°□°)╯︵ ┻━┻
leojean890: tiens ça aussi ça me fait penser à moi...
leojean890: #iaFiascoFail
leojean890: #332 à 14% attention
YannT: #boutonjaune
YannT: lets go
leojean890: et si elle arrêtait de perdre autant :o
WhatTrickeryIsThis: tu verra qu'il tentera même des matchs avec des ia silver quand tu fiasco grave ;D
leojean890: what ?:P
leojean890: c'est pas prévu au prgrm ça, si ?:P
WhatTrickeryIsThis: non tkt
WhatTrickeryIsThis: par contre tu peux avoir un ELO negatif
leojean890: ouais je sais :p
leojean890: quand on timeout tlt
leojean890: et après j'emmerde les gens
leojean890: car s'ils me battent ils perddent du LO
WhatTrickeryIsThis: et en théorie il parait que c'est impossible
leojean890: bah la ligue bois de code of the realm
leojean890: enfin la bois 4
leojean890: y'en a qq uns en Lo négatif
leojean890: mais rapidement ils repassent à 1 ou 2
WhatTrickeryIsThis: c'est la pratique
leojean890: realm ou realm 2 players je sais pls lequel
WhatTrickeryIsThis: de CG
WhatTrickeryIsThis: la therie ELO score c'est flooré
leojean890: comment ça ;p
leojean890: dwarfie pense que c'est pas super come méthode de ranking:p
leojean890: comme
leojean890: j'en ai pas comparé plusieurs donc je saurais pas classifier:p
WhatTrickeryIsThis: bon bha super je vais rêver de ce fiasco toute la nuit :)
WhatTrickeryIsThis: à demain
leojean890: bn :P
leojean890: mon late game est foireux
leojean890: ce nb de parties où je mène puis me fais rattraper..
Gh0stm4chine: le nombre de partie ou jperds car je me défends pas, va falloir penser à passer en sans speed quand l'avance est grande
leojean890: pareil, les pacs qui meurent c'est monnaie courante ;P
leojean890: bon cette version a fini 290
leojean890: j'en tente une autre...
Gh0stm4chine: https://www.codingame.com/share-replay/464012132 ils ont pas souffert
Bob: oooohhh je suis sorti des 300
leojean890: gg:p
Zorg1: ah merde j'ai eu la captcha au push
Bob: muahahaha
leojean890: moi ma nouvelle version elle va rester dedans jpense :P
Bob: spam spam spam spam spammity spam
leojean890: captcha ça m'est arrivé :p
leojean890: quand resubmit quand pas satisfait des 10 premiers matchs :P
Gh0stm4chine: ça fait quoi le spam submit, en quoi ça aide ?
Zorg1: "Confirmer que vous êtes bien un humain qui spam push"
Bob: Gh0stm4chine: c'est dans la tête que ça se passe :)
Gh0stm4chine: c'est histoire d'avoir un bon start ?
leojean890: le spam.. à rien sauf si tu veux une bonne place et tu sai pertinemment qu'il y a un cté aléatoire :P
Bob: c'est ça
Gh0stm4chine: d'acc
leojean890: ou si tu veux un bon départ pour jouer direct contre des IA assez fortes au lieu de devoir péniblement jouer contre d'autres et remonter petit à petit
Bob: voilà
leojean890: par exemple tu sais que ton code vaut top 10 mais tu as perdu 2 matchs parmi les 10
leojean890: tu peux resubmit direct:p
Bob: mais ça c'est vraiment utile que dans les ligues du bas où il y a peu de matches et beaucoup de monde, avec potentiellement des zones marécageuses au milieu
Zorg1: parfois c'est monté d'un seul coup puis descendre inexorablement
leojean890: ça c'est moi avec OOC
leojean890: quand j'avais plus d'une défaite sur 10 matchs je relançais
leojean890: en revanche dans pac..
leojean890: je peux perdre 7 matchs je suis pas choqué
Bob: dans ce genre de cas un bon start peut t'"économiser" un gros tiers des matches du push que tu joueras contre des IA à ton niveau plutôt qu'un gros tas de bouse de milieu de board
leojean890: exact:p
leojean890: tu joues direct là où ça t'intéresse
leojean890: et tu vois ton winrate sur une partie qui t'intéresse
Gh0stm4chine: j'ai vu que dans un même push tu peux rejouer le même adversaire
leojean890: ouais aussi
leojean890: ton code passe d'une zone à une autre
leojean890: et dans chaque zone tu joues contre des gens autour de toi
leojean890: et en fct des résultats tu es reclassé et rebelotte, matchs contre tes nouveaux voisins
leojean890: et à N matchs c'est fini
leojean890: N valant 110 en gold now
Bob: si tu veux passer le boss, tu as même généralement de bonnes chances de jouer plusieurs fois contre les IA du haut du board et contre le boss
Bob: d'où l'importance d'avoir un bon winrate sur ceux-là, mais pas que
leojean890: ouais ton submit est en aut donc tu joues contre le top 10
leojean890: haut*
leojean890: faut aussi tuer le reste du tableau
Bob: sinon c'est un coup à battre le top 10 mais à jamais y arriver parce que tu bats pas les 100-150
leojean890: parfois y'a une zone qui te fait lutter
leojean890: où tu peux potentiellement perdre plein de matchs et redescendre une fois de temps en temps
Gh0stm4chine: d'acc, donc vive le spam submit quoi
leojean890: mais bon faut pas trop en abuser non plus :P:P
leojean890: après y'a kovi qui l'utilise autrement (mais il win ainsi)
leojean890: (mais embête tlm quand même:p)
Gh0stm4chine: haha clairement, ça fait pas des miracles non plus
leojean890: il teste ses params
leojean890: 3 submits par param
leojean890: et il fait la moyenne des 3 submits
leojean890: pour le valider
leojean890: juste en changeant un nombre
leojean890: donc énormément de submits
leojean890: il connait pas cg benchmark o veut pas l'utiliser ou encore le fait en parallèle
leojean890: pour faire + de tests en mm tps
Gh0stm4chine: d'acc, je vois
leojean890: pour une feature j'imagine qu'il en fait encore plus
leojean890: car avec une feature viennent des params
leojean890: :P
leojean890: moi jfais un seul submit par param
leojean890: si je classe moins bien qu'avant je change
leojean890: règle simple
leojean890: même s'il y a de l'aléatoire et que c'est pas fiable
leojean890: et parfois je lance plein de cg bench
leojean890: mais ça dépend de mes idées
Gonny: gg @Mazelcop
Gh0stm4chine: c'est quoi le cg benchmarking ?
leojean890: ça te permet de choisir des adversaires et d'effectuer le nb de matchs que tu veux contre eux
leojean890: exeple : le boss et le top 5 de ta ligue
leojean890: tu obtiens le pourcenatge de win contre chacun
Gh0stm4chine: ah et c'est ou ça ?
leojean890: tu peux préparer 10 versions de ton code
Zorg1: bon la mystérieusement je suis monté dans les 150
leojean890: et tu les testes à la chaine
leojean890: tu submit celui qui te donne le meilleur ranking
leojean890: gg Zorg1
leojean890: moi 290 meilleur score pour 3 submits mdr
leojean890: ça lose:p
leojean890: 3 code différents of course mdr
Zorg1: oui mais si je repush je parri que je stagne dans les 300
leojean890: Gh0stm4chine je te file le lien
Zorg1: j'y comprends rien
leojean890: Zorg1 côté aléatoire :p
Zorg1: je dois avoir un bug à la con bien planqué
Gh0stm4chine: leojean890 cool merci
leojean890: https://github.com/s-vivien/CGBenchmark
leojean890: télécharge la dernière release
leojean890: tu lances ça en java
leojean890: sur ton ordi
leojean890: tu précises tes fichiers de code que tu veux tester
leojean890: leur path
leojean890: et voilà
leojean890: Zorg1ptet, parfois on pense pas à une partie du pbm aussi
leojean890: genre la détection ennemie ici..
leojean890: avec des seuils bizarres partout
Gh0stm4chine: les seed ça determine un adversaire et une map c'est ça ?
leojean890: seed pour la map
leojean890: adversaire il te faut des agentID
leojean890: http://cgstats.magusgeek.com/app/spring-challenge-2020/Gh0stm4chine
leojean890: a recuperer ici
Gh0stm4chine: parfait, merci bcp :)
leojean890: tu vois même des stats sur tes winrate contre tous les joueurs sur ce site
Gh0stm4chine: je vois que les joueurs autour de moi, y'a un truc pour voir mes résultats contre quelqu'un de précis ?
leojean890: pas trop essayé ça
leojean890: de se déplacer loin
leojean890: mais tu peux saisir un autre pseudo
Gh0stm4chine: d'acc je vois
leojean890: bon j'ai encore fait une version très moyenne là:P
leojean890: 306 à 30%
BigUP: on dirait moi en silver
leojean890: bizarre que tu passes pas ;o
leojean890: t'avais de bonnes perfs récemment
BigUP: leojean890, je suis loin
leojean890: t'étais pas si loin que ça du boss
leojean890: j'ai même pas capté de qui il s'agit
BigUP: leojean890, j'avais de bonnes perfs car je tapais des IA classées beaucoup plus haut
leojean890: alors que je n'étais qu'une place en dessous
leojean890: 261eme à 38%
BigUP: le niveau est monté egalement
leojean890: et tu t'en sors moins bien contre les moins bons tu avais dit
leojean890: bah teste toutes tes versions qui ont eu des perfs pas mal
BigUP: c'est l'impression que j'ai
leojean890: par le passé
leojean890: ouais mais il peut pas monter au dessus de celui du boss
leojean890: sinon àça passerait
BigUP: Le boss, je dois etre a peu pres a 50/50 de winrate
leojean890: ça pourrait passer j'imagine
BigUP: sauf que j'ai aucun match contre lui ! ;)
leojean890: bah submit jusqu'à ce que tu aies 10 win aux 10 premiers matchs ?:P
leojean890: ou 9
leojean890: :p
leojean890: 239 à 60%..
BigUP: ouais, mais souvant le 10eme match, je me bouffe un defaite contre un 330 et c'est mort ! ;)
leojean890: ça n'aide pas
leojean890: j'enchaine les défaites :s
leojean890: dur dur
Alshock: pfiouuu, je cache ma flemme de travailler sur mon code en faisant faire une IA de base à un jeune américain depuis hier, parfois je travaille mon karma
Gh0stm4chine: pour le cg bench, la liste des enemies sous le source path est pas obligatoire si le seed est set à random non ?
Gh0stm4chine: quoi que j'ai rien dit, ça n'a rien à voir
leojean890: 235eme en fin de run, mieux que rien mis pas top;)
leojean890: tu dois en mettre dans la liste
leojean890: des ennemis
leojean890: source path c'est tes codes
leojean890: seed je crois que c'est pour les maps, j'y touche jamais
leojean890: j'ai pas utilisé cg bench depuis le début de ce contest
leojean890: mais à fond au précédent
leojean890: Alshock tu bosses sur quel jeu au lieu de celui-ci?:P
leojean890: bah parfois on a la flemme car le dev restant est trop long/complexe
Alshock: Non je fais bosser un gamin sur ce jeu ci
leojean890: et unsure de donner des résultats potables
leojean890: genre si t'as un dev de plus de 10h et que t'es pas sur des résultats tu y réfléchis à 2 fois :P
leojean890: parfois tu fais les trucs courts plutôt
leojean890: un gamin ? :P comment ça^^
BigUP: ha, possible qu'une grosse partie des loose qu ej'ai contre des plus faible c'est sur des maps ou je laisse l'adversaire prendre mes super pellets car je commence par SWITCH
leojean890: BigUP vire tes switchs ;P
leojean890: ça te gaspille du farm:P
Alshock: BigUP ah ouais t'es ce genre de mec toi ?
Alshock: tu switch comme ça ? Carrément ?
leojean890: enfin fais comme tu veux mais moi ça m'aide
BigUP: faut que verifie la distance aux super pellets avant de switch
leojean890: de les enlever
Alshock: bon tu me diras moi je switch dès qu'un ennemi est près et peut me bouffer
leojean890: et juste si son type est nocif je vire :P
leojean890: et je les poursuis pas sur des km
leojean890: vaut mieux farmer
leojean890: ou faire comme les top, des embuscades
Alshock: "pas le temps de se taper, ya des champs à labourer"
leojean890: detection + embuscades
Alshock: les fameux "tiens, il est parti par là ? Il veut que je le tue ? C'est bien urbain à lui"
leojean890: même à 1h27 ça spam
leojean890: submits
leojean890: :p
BigUP: mon IA est de moins en moins douée ! ;)
leojean890: mais je recommande en silver de favoriser le farm
leojean890: et de ne pas négliger les zones où tu voyais des pellets par le passé
leojean890: et les jamais vues
leojean890: et pas perdre trop de temps à switch ou follow
leojean890: en gold après faut voir
BigUP: j'avais tendance a ne pas prendre les zones que j'ai jamais vu, j'ai corrigé ce soir (enfin rétali pour etre plus exact)
BigUP: mais ca ne change rien
leojean890: et sépare bien tes mecs
leojean890: avec une approche au choix parmi voronoi, malus dans l'éval vis à vis de la distance, ou faire une approche globale direct, etc
BigUP: oui, ca j'y pense, mais ca ne va pas etre evident a faire avec mon algo
leojean890: ou malus si collisions si t'as une simu
leojean890: vous êtes combien en silver ? 700 ?
BigUP: 855
leojean890: sinon autre approche, algo hongrois
leojean890: pour séparer
leojean890: enfin y'a plein de trucs plus ou moins longs
leojean890: moi je suis loin d'avoir un truc optimal donc je continue de regarder ces pistes
Gh0stm4chine: 01:33:24,964 INFO [ gh0stm4chine ][ SEED 0 ] ERROR internal error ha c'est pas bon ça x)
BigUP: oui, il faut que j ereflechisse a une autre strat, et un autre algo de base. Ca fait un moment que je me dit qu'il faut que je code un voronoi, juste la comme ca, je ne vois pas encore comment l'appliquer
leojean890: 376 gold, 855 silver, 2500 bronze, et 1000 bois j'imagine :P
leojean890: le nombre de personnes qui ont soumis est autour de 4600 jcrois
S1L3nCe: leojean890 c'est pas plus simple de juste séparer la zone en 6, de les scorer et d'envoyer un pac par zone ?
leojean890: Gh0stm4chine ça signifie probablement qu'un des champs de ton fichier de conf est mal renseigné :s
S1L3nCe: la map en 6*
S1L3nCe: en 6 zones* ><
Gh0stm4chine: le nom c'est bien : spring-challenge-2020 ?
**BlaiseEbuth lance violement une tortue sur Automaton2000.
Automaton2000: ce qui me fait le plus gros
leojean890: BigUP moi j'ai juste modifié un peu mon éval avec le voronoi, tu calcules un bfs global sur la map par pac, tu as la distance de tes pacs aux différentes cases
thoip: comment obtenir les logs en cas de timeout?
Alshock: en flushant ?
leojean890: pour chaque case tu as le mec le plus proche ou une égalité possible
leojean890: et tu refuses de viser une case si tu n'es pas parmi les plus proches
leojean890: en bfs
BlaiseEbuth: En organisant mieux tes données :grin:
thoip: comment tu flush sur l ide?
Alshock: comme dans ton code
BlaiseEbuth: :flushed:
Alshock: t'es en quoi ?
BlaiseEbuth: En mousse
leojean890: S1L3nCe séparer la map en 6 zones pas sûr, c'est pas ce que je tenterais mais ça peut marcher
S1L3nCe: Ok
S1L3nCe: thoip tous les cerr fait avant le timeout (crash j'imagine ?) sont affichés
leojean890: spring-challenge-2020 oui Gh0stm4chine
leojean890: bon allez dodo :P good night :)
thoip: C'est ce que je fais d'habitude le problème c'est dans une boucle et j'ai une tonne d'info. C'est pas un problème qui arrive tout le temps.
S1L3nCe: Pas le choix du coup faut flood
S1L3nCe: Tu mets des cerr avec les infos de base pour voir à quel itération ça bloque et des cerr entre chaque ligne pour voir laquelle bloque
Gh0stm4chine: bonne nuit !
BigUP: tiens, un cod equi m'amene rejouer top 100 ! j'ai pas vu ca depuis une ethernité
Zakaoai: dite pour utiliser l'algo de voronoi vous mettez en place une matrice des distances tour 1 ou vous faite juste du bfs sur chaque pac ?
Alshock: Puuuuute sa daronne en shooooort avec de boules de noëëëël !
Alshock: Pardon, hum... J'ai encore bugué sur de la merde, je me suis emporté
**BlaiseEbuth bouche les oreilles d'Automaton2000.
Automaton2000: je suis en train de faire une fonction de comparaison
BlaiseEbuth: C'est bien, continu Automaton2000.
Alshock: Dommage qu'il ait pas répété ce qu'il vient d'entendre ç'eut été épique
Automaton2000: tout ce qui est un peu plus de temps
Alshock: @Zakaoai moi je fait la map tour 1
BlaiseEbuth: Il a pas besoin de toi pour dire des horreurs.
Alshock: mais mon floyd est bcp trop lent alors je fais un floodfill par cell
Zakaoai: map de distance entre chaque tile ?
Alshock: autant dire qu'on n'est pas dans de l'opti de bout de chandelle
Alshock: ouaip
Zakaoai: Ah oui je viens de tenter un floyd :'( plusieurs heures passer à voir que c'est trop lent
Alshock: ça se fait bien, ça prend ~40 ms
Alshock: je sais pas si c'est nous qui sommes cons ou wikipédia qui essplique mâle
BlaiseEbuth: Teint le en rose ça ira mieux
Alshock: attends j'ai pas encore la vanne
Alshock: wait for iit... wait for iiiiiiiit....
Alshock: non il est trop tard
Alshock: putain t'as juste réagi sur le mâle
Alshock: je suis teubé c'est maintenant officiel
BlaiseEbuth: Y'a pas de vanne. C'est juste qu'un pink floyd ça passe toujours bien...
Alshock: vieux con si j'avais craché ma bière sur l'ordi j'aurais pas eu l'air con
BlaiseEbuth: :grin:
BlaiseEbuth: C'pas une mauvaise idée la bière... Mais faut que je me lève...
Alshock: je suis une putain de larve, chez moi le confinement on appelle ça l'hibernation
Zakaoai: Du coup flood fill c'est bien à réaliser pour chaque tuile pour avoir la matrice de distance ? Ou il est trop tard et mon cerveau suit pas ?
BlaiseEbuth: Moi c'est juste pareil que d'hab...
Alshock: c'est théoriquement pas très bien mais ça marche
Alshock: et quand j'ai essayé de faire mieux ça a marché moins bien (beaucoup moins bien, donc c'est clairmeent ma faute)
Alshock: mais le floodfill sur chaque cell si tu fais rien de lourd à côté ça passe bien
Alshock: comme j'ai dit dans mon premier tour je crois que c'est une quarantaine de ms
Alshock: (j'en prends 70 en tout)
Zakaoai: pour ta totalité des cellules ?
Alshock: ouais
Alshock: enfin la totalité des cellules accessibles, je me suis pas amusés à mapper depuis les murs
Alshock: si t'es dans un langage lent ça peut ptêtre monter jusqu'à 200 ms, mais rien d'insurmontable a priori
Alshock: après la meilleure réponse c'est évidemment le benching
Zakaoai: je suis en js
Alshock: ça vaaaaa
Alshock: c'est généralement bien plus rapide que le python et je l'ai fait en python sans trop de soucis
Alshock: je pense que tu peux partir sur un floodfill de base et si t'as besoin de mieux plus tard tu pourras ajuster
Zakaoai: bon j'ai déjà un algo de bfs d'implem je doit juste l'appliqué tours 1 à tout les cases ou tu peut bouger
Alshock: ouais, après si quand tu lances ton bfs ça te prends pas trop de temps tu peux aussi le laisser comme ça
BlaiseEbuth: Sa mère la pute en short bleu dans les orties du diable !
BlaiseEbuth: (╯°□°)╯︵ ┻━┻
Alshock: ou l'alternative entre-deux, tu peux créer la lookup-table sans rien mettre dedans et quand tu veux faire un bfs, s'il est pas dans la table tu le fais et tu le stockes, sinon tu renvoies juste le résultat déjà enregistré
**Alshock bouche les oreille d'Automaton2000 et lui met un vieux slip devant les yeux
Automaton2000: parce que la position de départ
Alshock: exactement, d'ailleur sje t'y accompagne tout de suite
Zakaoai: Oaip, en fait je connais pas du tout voronoi et comment l'exploiter c'est pour ça que je voulais implem la matrice des distances tour 1
Alshock: voronoï dans une map comme la notre c'est enfantin (en tout cas en pas opti du tout) : tu prends toutes les pellets, tu calcules pour chacune toutes les distances avec un pacman, et tu les associes au pac le plus proche
Alshock: et voilà, un voronoï du pauvre de 10 lignes grand max
BlaiseEbuth: Automaton2000, apporte moi le premier truc alcoolisé que tu trouvera. (A l'exclusion d'Alshock)
Automaton2000: je me suis rendu compte que je ne fais pas les multis?
BigUP: C'est moche !
Alshock: il parles des pulti-fruits ?
Alshock: -p+m
Zakaoai: Hm bon je viens de tester un bfs sur toute les positions sans check si ça retourne le bon résultat et ça me met 7ms :/ Je doute un peu que ça fasse ce que je souhaite
Zakaoai: ah non autant pour moi j'ai oublier d'enlever des perfs en plein millieu
BlaiseEbuth: Pourquoi y'a jamais d'rhum sur c'raffiot ?
Alshock: d'enlever des perfs ?
Alshock: Dans quel contexte tu veux en enlever ?
Alshock: @BlaiseEbuth parce que j'y suis gamin ! Et où je passe, le rhum se r'trouve dans ma gerbasse
Zakaoai: :D Je m'exprime mal. Je parlais de log de performance. Ok bon 142ms pour tout les bfs
Alshock: je suis un powète
Alshock: ouais tu vois c'est tout à fait acceptable
Alshock: si tant est que tu rentabilises cet investissement ensuite
BlaiseEbuth: D'où tu m'appelles gamin ? J'pourrai être ton père.
Alshock: tu pourrais certes, si t'avais pas été trop raide bourré pour trouver letrou
Zakaoai: Il faut juste que je rende ça exploitable car la je sort une liste pour chaque tuile.
Alshock: fais une map 4D
Zakaoai: En fait la mise en place de voronoi j'ai plus ou moins compris mais c'est l'exploitation de cette liste associés au pac
Alshock: lookup[x1][y1][x2][y2] = dist
BlaiseEbuth: Le manque de carburant n'aide pas à avancer...
Alshock: bah t'en fais ce que tu veux mais c'est plus ou moins prévu pour que t'ailles chercher prioritairement là-dedans des pellets plus proche de tio que de quelqu'un d'autre
Alshock: BlaiseEbuth: perso j'ai noyé le moteur ça aide pas bcp plus
Valkilaen: Je sais que mon code crash (erreur runtime), mais j'ai aucune erreur qui se log dans la sortie d'erreur, c'est normal ? Enfin si, desfois l'erreur s'affiche, desfois non, mais l'erreur y est à chaque fois Je deviens fou
Alshock: tu codes en python ?
Valkilaen: Pire, j'ai testé le TypeScript
Alshock: Ouais bah j'ai eu la même en python ça doit être un bug insolite du site
Alshock: en tout cas, ça passe à coup de refresh/clear cache
Alshock: mais j'avoue que c'est aps conforama banque
Zakaoai: bon j'ai un résultat maintenant savoir si c'est le bon c'est autre chose
Zakaoai: les premières valeurs ont l'air ok bon
Zakaoai: bah je ferais voronoi demain. Objectif après ça serais de simuler la meilleurs move pour maximiser le prochain tour
R4N4R4M4: On peut modifier l'entreprise pour jouer en équipe ? ou c'était avant le début du contest ?
R4N4R4M4: Ah c'est bon j'ai trouvé, ça marche
Valkilaen: Vous utilisez un pattern ou une technique particulière pour intégrer le problème de timeout dans le bot ?
C'est quelque chose qui revient souvent, mais à part faire des checks un peu de partout pour forcer l'output pour éviter le timeout
Alshock: tu peux jouer en local, si t'es déterministe tu peux même sans simu avec les retours connus dans un fichier d'input ^^
Valkilaen: Nan mais je veux dire, ça arrive jamais d'avoir un round en temps de décision qui dépasse les 50 ms ? Pour une raison ou une autre ?
R4N4R4M4: Valkilaen, tu chronomètres ton calcul et tu coupes quand tu atteinds la limite
Valkilaen: Oui oui, du coup c'est c'que je fais Mais "couper quand tu atteins la limite" ça part du principe que le langage et le pattern que t'utilises le permet
Valkilaen: D'où ma question d'origine
R4N4R4M4: Ah oui ça dépend du langage
Valkilaen: Genre en JS, stopper l'execution d'une fonction, c'est clairement pas implémenté de base
R4N4R4M4: tu peux implémenter ça dans une fonction
R4N4R4M4: mais sinon mis à part le coder toi même, je vois pas
R4N4R4M4: en général, on fait ça sur une boucle qui se répète pas mal de fois, et donc ça pénalise pas de couper au bout de 9000 tours au lieu de 10000
R4N4R4M4: Mais si tu as un traitement unique qui prend tout le temps, c'est vrai que c'est plus dur à gérer