Chat:Fr/2022-04-09
Zorg1: o/ tout le monde
Zorg1: \o Automaton2000
Automaton2000: le code sur le chat
Remi.: o/
Zorg1: \o
Remi.: \o/
Remi.: Pas facile la ligue or du FC2020
Zorg1: fix ton bot FC2020 et go legend
Zorg1: ezpz
Remi.: Facile à dire ^^ ça veut dire quoi déjà ezpz ?
Remi.: Il n'y a rien à corriger dans mon BFS. Je sais ce que je pourrais faire pour améliorer ma solution, mais j'ai peur de casser mon BFS justement.
Stilgart: easy peasy
Remi.: Merci
Zorg1: comme je me suis fait grillé
Zorg1: je rédigé une réponse + longue moi :(
Stilgart: et bonjour à tous, et licorne à Automaton2000 le bot qui aime les tortues
Automaton2000: et il est à combien le boss gold
Remi.: (en train de chercher sur wordreference la traduction de peasy)
Zorg1: en gros facile, les doigts dans le nez
Stilgart: (c'est un vrai mot?)
Remi.: Le boss gold est à 32,44 Automaton2000
Automaton2000: ça doit être pour ça
Remi.: easy-peasy adj UK, informal (easy, simple) (familier) fastoche adj
facile comme tout adj
Stilgart: oui, mais peasy tout seul ça existe ?
Remi.: Oui Automaton2000 c'est pour ça que je ne passe pas legend, je suis à 21,47 moi ^^
Automaton2000: moi ça va être chaud pour lvl 42
Zorg1: ça vient d'une pub britanique des années 70 parait il
Remi.: Stilgart a priori non
Remi.: 401 / 530 c'st la 1ère fois que je suis aussi mal classé dans une ligue ^^
Remi.: J'ai toujours été dans la 1ère moitié
Remi.: Zorg1 c'était pas une phrase à toi qu'Automaton2000 vient de citer ?
Automaton2000: y a moyen de faire des trucs à faire en fait
Remi.: Automaton2000 je préfère les faire faire les trucs à faire en fait, plutôt que de les faire.
Automaton2000: c'est tout à fait pareil
Remi.: :rofl:
Zorg1: Remi. avec un prefix de 3 c'est assez courant qu'il cite des posts quasi en entier
Zorg1: Automaton2000 t'as pas trop d'imagination tu sais ça ?
Automaton2000: oui, je viens de passer à la ligue suivante
Remi.: GG Automaton2000
Automaton2000: ça veut dire qu'il y a dedans
Remi.: Y a dedans des gens qui étaient là avant toi ^^
Remi.: Tu es sur quel multi Automaton2000 ?
Automaton2000: je pense que les gens de la ligue bois 2
philRG: bon j'ai fini par monter silver à FC2020 avec un Beam search (BFS limité à 2 actions par noeud)
philRG: actions random
Remi.: Automaton2000 tu pourrais féliciter philRG
Automaton2000: c'est pas mal du tout
Remi.: :D
philRG: et sur les chemins trouvés dans les 50ms, je prends la potion ayant le meilleur ratio prize/distance
philRG: Automaton2000 merci :-) tu es bien urbain :-)
Automaton2000: faudrait que je fasse un peu de chance de faire des trucs
dwarfie: dommage que ca soit pas un vrai beam search du coup ...
philRG: ben c'est un bfs avec élagage
philRG: j'avoue avoir du mal avec les terminologies
dwarfie: donc pas un BS
dwarfie: surtout avec du random ...
philRG: un beam search ressemble plutôt à un DFS du coup
dwarfie: Automaton2000 : sort les liens wikipedia stp
Automaton2000: ya des gens qui sont pas les mêmes
dwarfie: Automaton2000 : oui , ca depend des langues
Automaton2000: ca veut dire que le nombre de gens qui ont fait un truc du genre
philRG: Automaton2000 un petit coup de pouce https://en.wikipedia.org/wiki/Beam_search
Automaton2000: c'est juste que je n'ai aucune idée de comment je vais le faire en php ...
philRG: :-D
dwarfie: Automaton2000 : moi si ... et ca marche ... et toc
Automaton2000: première fois que j'ai fait de la simu
Stilgart: Automaton2000: fake, tu passes ton temps à simuler avec ta chaine de Markov
Automaton2000: bonjour tout le monde !
Stilgart: bonjour Automaton2000
Automaton2000: je ne sais plus si on rajoute une case entre chaque, donc 10001 au lieu de 8
Ezuker: Coucou !
Stilgart: Automaton2000: tu as donc ajouté un 1, c'est ça ?
Automaton2000: et c'est quoi le problème ?
Stilgart: Automaton2000: c'est pour voir si tu suis
Automaton2000: (je suis en train de me dire que je ne gère pas les collisions
Stilgart: manifestement, c'est raté :)
Ezuker: Bon je vais essayer d'être légende cette semaine sur un jeu :)
Thyl: Yo le chat :cat:
Ezuker: Bon je n'y arrive po
Ezuker: Mon programme ne peut pas être supporté, il doit être trop lourd
**dwarfie met le musique ...
dwarfie: " Tu pues le chat, tu pues le chat, qu'est-ce qu'ils te donnent à manger ? Tu pues le chat, tu pues le chat, ce n'est pas de ta faute."
dwarfie: :D
I_love_CoC: bonjour à tous
Remi.: \o
Sirios: yop I_love_Coc
Stilgart: o/
Stilgart: Automaton2000: tu as vu le beau chat de Thyl ?
Automaton2000: pas trop dur de faire une fonction qui prend en compte le fait qu'il y a
Zorg1: ça serait bien de finir tes phrases Automaton2000 ;-)
Automaton2000: je l'ai fait en python
Zorg1: ah dans ce cas là Automaton2000 ...
Automaton2000: ca doit etre pour ca que je veux
Stilgart: Automaton2000: finir tes phrases ? coder en C++ à la place pour finir tes phrases ?
Automaton2000: du coup il fait du c
leojean890: alors Stilgart Zorg1 vous êtes ready pour le contest ?:P
leojean890: ça fait un bail qu'on a pas fait de contest de bots :p
Zorg1: on verra ça le 21 ^^
leojean890: BFS/MCTS/GA/SA vont de nouveau se fritter
Zorg1: ça dépend vraiment du contest
leojean890: ooc j'avais aucun des 4 mdr
Zorg1: ça se trouve les heuristiques auront pê leur chance
leojean890: sauf des bfs par ci par là dans la partie move et shoot
leojean890: ouais le dernier contest avait quelques heuristiques dans le top 100 (je dirais 3 ou 4 bots heuristique)
leojean890: FC 2020 j'étais en beam search, bfs pour pacman je crois
leojean890: pour totoro ça marchait mieux depth 1 j'ai pas encore compris pk car j'y ai pas touché après kle contest
Zorg1: totoro j'avais un MCTS ça marchait bien
Zorg1: j'ai juste mis un temps fou à le débugger ^^
leojean890: philRG l'élagage du beam search c'est basé sur un nb max de noeuds par depth (tu élagues les moins prometteurs)
leojean890: ah ouais tu m'avais dit ça pour le mcts t'as été courageux
leojean890: ça doit être galère à debug surtout sur un jeu assez compelxe comme ça
Zorg1: j'ai quasiment copier/coller mon MCTS de UTTT
leojean890: j'ai une éval depth 1 et hop mdr, et en bfs depth 2 ça scorait moins ^^
leojean890: ouais je vois
Zorg1: j'ai voulu faire une évol et j'ai passé 3 jours à trouver une connerie ^^
leojean890: dans le top 100 y'avait plein de mcts sur totoro
leojean890: même le numéro 2 Saeylos
leojean890: quel genre d'evol ?
Zorg1: ah ah passait de pointeur à des indices
leojean890: ah pour accélérer le code ?
Zorg1: je m'étais vautré sur la racine (enfin je la mettais pas à jour c'est pour ça que ça merdait) :D
Zorg1: oui pour voir ce que ça donnait
leojean890: d'après YannT si tu trouves les bons cuts tu gagnes plein de places d'un coup
Zorg1: oui tout est dans l'élagage des coups possibles
leojean890: genre il est passé top 30 juste après le contest il rageait de pas avoir trouvé le cut avant :p
leojean890: elagage sur heuristique pour optimiser
Robinsstudio: Genre le MCTS ça marchait si bien que ça ? @Zorg1
Zorg1: bah c'est grace à ça que je suis passé légende
leojean890: Robinsstudio regarde le PM du 2eme du contest tu verras que oui hehe
leojean890: le premier était en machine learning
Zorg1: c'était un MCTS avec une éval donné par un NN non ?
Zorg1: à la base
leojean890: ouais son NN a trouvé son éval
leojean890: avec eval on appelle plus ça mcts après :p
leojean890: MC depth N ?
Zorg1: ou minimax tout simplement
leojean890: ptet oui
leojean890: je sais plus quel algo^^
leojean890: 3j à trouver que tu maj pas la racine j'avoue c galère
Robinsstudio: Y a une personne dans ma boîte qui est allée en légende sans anticiper plus d'un coup à l'avance. C'était full heuristiques.
Robinsstudio: C'était vraiment fort.
Zorg1: bah j'avais aussi fait à l'arrache un bitboarding, je testais les deux ^^
Zorg1: oui Robinsstudio y en a qui ont été en légende avec des heuristiques ^^
leojean890: bitboard ça ajoute des causes de bgs à moins que tu sois méga habitué et que ce soit aussi fluent que le code de base hihi
leojean890: Robinsstudio y'en a 3 minimum qui ont fait top 100 en heuristiques
Robinsstudio: C'est dingue. Les heuristiques, c'est un truc qui me dépasse complètement.
leojean890: c'est plus facile à inventer que des search :p
leojean890: genre tu analyses les matchs, par ex les défaites
leojean890: si tu perds tu ajoutes un if qui te fait gagner^^
Robinsstudio: Oui je sais mais je n'arrive pas à faire ça.
Zorg1: oui enfin le MCTS dans UTTT j'ai implémenté ça quasiment mécaniquement sans vraiment aucune connaissance stratégique du jeu
Robinsstudio: Le côté analyse des matchs c'est trop dur.
Zorg1: ce qu'il te faut si tu commences à vouloir une fonction d'éval
leojean890: l'analyse des matchs c'est simple jusqu'à un stade où ça devient dur
leojean890: le stade où t'as l'impression que ton bot joue bien
Zorg1: :thumbsup:
leojean890: mais qu'il perd quand même
leojean890: et là tu comprends pas pk
leojean890: tatn que tu comprends les merdes que ton bot fait c'est easy
Zorg1: "c'est simple sauf quand c'est complexe" leojean890 09/04/2022 :p
leojean890: mais bon j'avoue quand tu arrives trop haut dans le classement ça devient dur
leojean890: Zorg1 je suis sûr que tu approve mon msg mdr :p par ex en bronze tu arrives souvent facilement à trouver les limites de l'heuristuqye :p
leojean890: quand t'arrives en gold parfois on arrive plus à monter à partir d'un certain niveau d'ia
leojean890: certains arrivent à trouver des heuristiques qui jouent quasiment optimal
leojean890: alors que souvent on a des idées trop approximatives qui marchent en général avec limites
leojean890: à un moment sur du minmax/bfs tu te retrouves à tuner tes paramètres au pif dans ton éval mdrr
leojean890: car t'as plus d'idées suffisamment bonnes pour en ajouter/modifier
Zorg1: ah oui le moment "j'ai plus d'idée je tente des trucs au pif"
leojean890: magic numbers
leojean890: sinon y'a les "biais cognitifs"
leojean890: genre t'as une "super idée qui est super dans ta tête"
leojean890: et dans les faits hop tu perds des places mdr
leojean890: mais parfois faut juste la debug
leojean890: genre nouvelle feature => nouveau bug
leojean890: et en fait l'idée était bien
leojean890: mais parfois elle est mauvaise car ça amrche dans 1 partie sur 10
Zorg1: après je pense qu'il faut être prêt à réécrire plein de fois ton bot
Zorg1: c'est là que je lambine
leojean890: faut être courageux hehe
leojean890: pareil la flemme mdr
Zorg1: et que je le fais au dernier moment avec scéance de débug jusqu'à 04:00 du mat
leojean890: et j'ai pas assez d'idées qui justifient de faire table rase
leojean890: j'ai déjà e la patience de réécrire un bot dans un autre langage pour les perfs mais c pas tout le temps
leojean890: 4h du mat ça m'arrive aussi :s
Zorg1: pour ça je préfère le go, c'est pas forcément top optimal, mais au moins je peux avoir des perfs
Zorg1: tout benner pour tout réécrire, bof
leojean890: FC2020 j'avais pris 10h pour réécrire mon python en go mdr
Zorg1: après YannT arrive à faire des trucs pas mal en Kotlin
leojean890: kotlin j'ai pas encore approfondi xD
leojean890: ouais il s'en sort bien
leojean890: il rank souvent bien
Zorg1: en plus si tu connais pas trop le langage, pas forcément le bon moment de le découvrir :p
leojean890: clair, c'était un move risqué ma réécriture du FC2020 en plein contest alors que je connaissais bof le go
leojean890: j'avais réécrit des prgrms en c++ mais hors contest pour avoir plus de temps
leojean890: des "faciles" => oware, othello
leojean890: y'a plein de simus plus dures
leojean890: et 2048 en go
darkhorse64: :mouse: > :cat: ! Yes !
Sirios: gg darkhorse64, tu as choisi quelle méthode (je suis en train de m'arracher les cheveux sur le test 4)
darkhorse64: Ben pareil, j'ai galéré trois heures dessus. J'ai regardé la vidéo donnée en lien par l'auteur dans le forum mais ça ne passait toujours pas. Soit je mettais trop de temps a atteindre les 180°, soit j'étais trop loin pour atteindre le bord. Et puis, j'ai remarqué que quand on se dirigeait vers le centre, le chat ne bougeait pas ...
pardouin: perso je teste parmis 10000 angles celui qui me donne la meilleure eval
pardouin: le plus dur c'est d'écrire la fonction d'eval
pardouin: et dès que l'éval guarantit la survie, je rush sur le bord
pardouin: exemple de replay: https://www.codingame.com/share-replay/618455850
pardouin: ce qui s'affiche c'est mon eval
Sirios: du coup tu vas le plus loin possible dans l'axe passant par 0.0 et le chat et des que tu ne peux plus tu traces tout droit?
Sirios: Moi je suis sur un truc qui ressemble à ca
Sirios: https://www.codingame.com/replay/618456380
Sirios: mais ca ne passe pas le test 4
Sirios: du moins j'ai l'impression que ca manque de précision, des arrondis peut etre
pardouin: mon test 3 c'est quasi le même que le tien
pardouin: en 93 coups au lieu de 94
pardouin: ça se joue pas à grand chose
Sirios: hmm donc je dois optim
pardouin: https://www.codingame.com/replay/618456588
Sirios: pour le test 4 j'ai 2 comportements
Sirios: https://www.codingame.com/replay/618456606
Sirios: https://www.codingame.com/replay/618456991
pardouin: il est censé naturellement se stabiliser sur un cercle assez proche du centre
pardouin: le tien il tourne un peu loin du centre j'ai l'impression
Sirios: oui en fait je calcul l'équation de la droite passant par le chat et la souris
Sirios: ensuite je calcul les intersections avec le cercle (un est le chat, l'autre la sortie que j'envoie)
pardouin: regarde mes frames 55 à 65, c'est quasi un arc de cercle
Sirios: si la sortie est atteinte plus rapidement par la souris que le chat je la bloque
pardouin: bref, je dois filer, bon courage :)
Sirios: sinon je continue a tourner
Sirios: lol merci
Sirios: ++
pardouin: mais tu m'as l'air un peu trop loin du centre pour tourner
pardouin: c'est plus efficace plus proche, tu as une meilleure "efficacité" angulaire
Sirios: ben c'est que je n'ai pas détecter de porte de sortie ou j'arrive avant le chat :p
Sirios: oui
pardouin: bref ++ o/
Zorg1: \o --
Ezuker: Y a t-il un moyen pour avoir un debugger sur codingame ?
Ezuker: Ou alors on est obligé de le faire sous vsc
Stilgart: il faut faire le debug en local
Ezuker: Debug avec le cerr ?
Ezuker: en c++ du coup
Stilgart: un peu de respect, j'ai dit debug :)
Stilgart: (donc surement pas cerr, que tu peux faire sur CG mais qui ne t'aidera pas vraiment)
Ezuker: J'aimerai bien debug sur vsc mais va s'y j'ai plein de messages d'erreurs donc rip
Zorg1: ah vsc n'a pas un debugger user friendly ?
Zorg1: ça existe toujours les gens qui débuggent en ligne de commande ?
Stilgart: oui, c'est très bien gdb
Zorg1: plus touché depuis longtemps ^^
Stilgart: et sinon, vsc a évidemment un débogueur intégré
Zorg1: j'espère pour un IDE ^^
Zorg1: mais bon avec microsoft :p
**dwarfie arrive en un eclair
dwarfie: codeblocks aussi
**dwarfie repart aussi vite se cacher :D
Stilgart: tu as le droit de repartir..
Stilgart: aussi vite que tu es venu :p
Stilgart: surtout que bon, c'était du gdb par dessous avec un wrapper qui passait son temps à segfault dans mon expérience
**dwarfie l'utilisera quand meme une fois de plus au prochain contest :p
Zorg1: c'est vraiment si pourri que ça codeblock ?
Stilgart: depuis quand tu codes des bugs toi ?
dwarfie: dixit Stilgart : "ca l'était"
Stilgart: Zorg1: j'ai connu sur le début, et j'ai regretté Dev C++
dwarfie: je code des features ... ca se debug aussi les features :rofl:
Stilgart: (ce qui place la barre à peu près dans la fosse des mariannes)
dwarfie: Automaton2000 : big is feature ... mais tu le savais deja
Automaton2000: et j'ai du mal à la tête
**Stilgart tend un peu d'huile à Automaton2000
Automaton2000: ce qui n'est pas la même chose en même temps
dwarfie: Automaton2000 : tu preferes un peu de graisse de tortue ?
Automaton2000: ce qui me permet de faire le puzzle de la semaine :d
Stilgart: Automaton2000: qu'est-ce que ça sera quand on te donnera de la graisse de licorne ?
Automaton2000: c'est le genre de truc
dwarfie: piscine , tortue , ca se tient presque Automaton2000
Automaton2000: on va essayer de le faire
Stilgart: go go go Automaton2000
Automaton2000: je pense que mon code ne marche pas bien
Stilgart: erf
Zorg1: bah débugge le Automaton2000 :p
Automaton2000: après je suis pas sur de comprendre la logique
Zorg1: on vient d'en parler en °
Zorg1: +
Stilgart: Automaton2000: conseil de la part de kovi, ça sert à rien de spam submit
Automaton2000: en moins de 10 lignes
Zorg1: alors pourquoi il le fait lui ?
Zorg1: Automaton2000 éclaire moi je vois pas la logique !
Automaton2000: c'est très bien le taff
Zorg1: t'as jamais utilisé un outil de ticketing toi Automaton2000 ...
Automaton2000: a la fin du jeu
DCVolo: Pour Mars Lander Episod 2 vous avez utilisé quel logique ? Trigo ? Trajectoire de projectile ? ou des trucs encore plus complexe ?
b0n5a1: o/
b0n5a1: DCVolo : https://www.youtube.com/watch?v=pN8IFhbGYkQ (valable pour le 2 et le 3)
Baengi: moi j'ai galéré en python à essayer de faire fontionner tan() pour accélérer à l'inverse de la chute
Zorg1: \o
DCVolo: pour l'instant j'ai juste fait mes deux classes pour la fusée et le terrain et quelques méthodes pour calculer des choses utiles
DCVolo: mais comme je suis un peu une quille en math, j'sais pas trop comment m'y prendre pour arriver à optimiser trajectoire & fuel sans faire un truc over compliqué type genetique x) j'en suis pas encore là niveau code
DCVolo: en plus de ça le lien du cours sur la genetic est en accès privé ..
b0n5a1: ha...je sais pas j'ai mis ça juste pour avoir une visualisation d'un AG (je me rappelais qu'un truc comme ça traînait sur YT) ^^
DCVolo: nan je parle de ce lien sur la page du puzzle :
DCVolo: ah bah ok maintenat ça marche...
b0n5a1: j'allais le dire ^^
DCVolo: on va dire que j'ai rien dit alors .. me suis bouffé des error 412 à la chaine
Sirios: sympa l'AG de mars lander 3
dwarfie: ca sert a rien
Ezuker: Je vais commencer à pleurer
dwarfie: vas-y ... comme on dit "pleure un coup , tu pisseras moins" :rofl:
b0n5a1: Ezuker si tu rames sur le code pour un multi, tu devrais peut être commencer plutôt par te faire la main avec les puzzles
Ezuker: Non, c'est une histoire de vsxc
Ezuker: vsc
Ezuker: Débuggeur marche po
b0n5a1: ha
b0n5a1: tu peux prendre visual studio community, gratuit
b0n5a1: par contre fais gaffe à l'installation d'aller en détail sélectionner l'installation de C++, de mémoire par défaut y'a que C#...pour éviter de devoir relancer/reconfigurer l'install
b0n5a1: par contre...t'es bien en configuration de debug ?...parce que si t'es en release tu va pas pouvoir visualiser le contenu des variables
b0n5a1: enfin si y'a bien cette distinction avec vsc, j'en sais rien j'utilise que visual studio (pro et community)
Sirios: Automaton2000 tu es en réparation ?
Automaton2000: il est un peu trop pour moi
Sirios: je me disais aussi
Ezuker: C'est bon j'ai réglé
ZndrBrok: Quand tu passes 2-3 heures sur un puzzle simple sans comprendre ce qui cloche et que seulement le lendemain tu te rend compte que en faite tu traques la position initial de thor sans prendre en compte ses déplacement... tu as quand même une forte envie de rire et de pleurer en même temps... #LiveWithNoBrainIsHard
ZndrBrok: Je sais pas si qui que ce soit en a quelque chose à cirer mais je me disais que mon malheur/bonheur fera peut-être sourire quelqu'un :P
Ezuker: mdrr je l'ai eu aussi
Ezuker: sauf que j'ai pris 2 minutes à comprendre :sob:
ZndrBrok: Morale == PAs trop coder quand le cerveau garde à peine les yeux ouverts && apprendre à débuger avec l'IDE de codegaming :P
ZndrBrok: @Ezuker, pour ma décharge, je suis encore un jeune padawan et j'étais dans un état un peu second vers 4h du matin haha Mais je me sens néanmoins quand même humilié par mon propre cerveau :P
Ezuker: tqt tu n'es pas le seul jeune padawan mdrr
Ezuker: Je suis nul faut pas croire
DCVolo: présent aussi
ZndrBrok: Je me méfie des gens humbles! {Regard_Paranoïaque} :joy:
Ezuker: http://chat.codingame.com/pastebin/a4bb4805-ff71-4fb6-817d-69854f04f0ab
Ezuker: comment on déclare un vector comme ça
Ezuker: c++
DCVolo: ben c'est ce que tu fais
Ezuker: ça me met des erreurs
DCVolo: oh
DCVolo: enlève la taille
b0n5a1: Ezuker : https://onlinegdb.com/VuZVNGwYD
Ezuker: ça me met plus d'erreur
Ezuker: ça ne veut pas lire non plus...
DCVolo: http://chat.codingame.com/pastebin/b4430bc1-4b75-46f2-a6dc-ba0a7bfba3eb
b0n5a1: le = est overkill, les { } internes servent à rien
Ezuker: En faites c'est pour par que je mettes à la main les cin
Ezuker: ça me soule mdrr
Ezuker: Bon je vais me coucher je verrais ça demain merci
DCVolo: tient d'ailleurs, tu sauras peut-être Bon mais y'a une différence lorsque sur un pair p, tu lui associes des valeurs comme ça :
DCVolo: make_pair(0,0); pair<int,int>(0,0); p({0,0});
b0n5a1: pas vraiment, perso je préfère l'initializer_list (ton 3e exemple) juste pour la simplicité d'écriture