Chat:Fr/2020-07-04
Bon[]Crayon: De bon matin boujour
Bon[]Crayon: Bonjour Automaton2000
Automaton2000: c'est pas ça qui me fait penser que je n'ai pas fait le contest en cours :)
Bon[]Crayon: Bonjour AutomatonNN
Bon[]Crayon: :robot:
AutomatonNN: moi je trouve ça cool que ça marche pas mal
Bon[]Crayon: AutomatonNN De même
AutomatonNN: on parle de toi de la le temps de contest de contest avec un code pour le partir que tu as pas fait
Bon[]Crayon: AutomatonNN Dès le matin t'es en forme pour de la métaphysique de contest de contest
AutomatonNN: personne te retrouve qui est censé me faire une transposition de demain
Bon[]Crayon: AutomatonNN C'est de dur de te suivre.
Bon[]Crayon: Automaton2000 :turtle: ou :robot:
Automaton2000: je suis déjà dans le top 100
Bon[]Crayon: Automaton2000 :100:
Automaton2000: je sais pas quel est le but
Bon[]Crayon: Automaton2000 Top 1
Automaton2000: je peux plus m'en passer
Bon[]Crayon: Automaton2000 :no_smoking:
Automaton2000: c'est quand même beaucoup plus simple que ça
Bon[]Crayon: Automaton2000 :notes:
Automaton2000: je vois, je vais essayer de coder un algo de recherche ?
kennel-outis: je vien de debuter la programmation et je vous assure que j'adore ce site
Alshock: aqueux coucou zatousse !
Alshock: et coucou Automaton2000, AutomatonNN
Automaton2000: plus une paire de jours
AutomatonNN: son maitre de son chan fait pas le contest pour le contest de ce que tu as fait ?
Alshock: kennel-outis: ça fait plaisir à entendre, souvent ceux qui débutent sont un peu perdus ici. Tu n'as fait aucun tutoriel de prog avant de venir ?
Alshock: AutomatonNN passe le mot "contest" en banword, tu tourne au disque rayé vieux !
AutomatonNN: oui je suis content de ton argent de contest de contest de contest de contest comme ça merci
Alshock: xDDDDDDDDDDDDD
Zorg1: o/ tout le monde ainsi que les bots de référence Automaton2000 & AutomatonNN
Automaton2000: en fait le problème c'est quand tu fais du code qui ne compile pas
AutomatonNN: C'est quoi le bug ?
Zorg1: c'est pas un bug, AutomatonNN, c'est une feature !
AutomatonNN: il n'y a pas parti de ce que tu fais dessus
Drisc: Salut à tous
Thyl: Yo !
Champi67: Hello tous ! Je viens de résoudre tous les tests d'un puzzle sponso par ANEO, mais lorsque je soumets mon code, ça ne valide plus que 80% des tests "finaux", que je ne vois pas. Je modifie mon code, ça ne valide plus que 80% des tests de base mais ça valide maintenant 90% des tests finaux... Comment faire ? Merci d'avance
Thyl: ton code ne fais pas intierement tout ce qui faut
Thyl: Les tests changent pour éviter les codes en dur
Champi67: Yep, c'est ce qu'ils me disent, mais du coup je peux pas débugger mon code...
Champi67: Pfiou, je viens de réussir, et je n'oublierais jamais le compromis entre Math.floor et Math.round : Math.fround !
Zorg1: sinon on peut aussi faire ce puzzle qu'avec des entiers ;-)
Zorg1: ça évite de se prendre la tête avec les arrondis justement
Zorg1: ah c'est vrai c'est un puzzle sponsorisé, on ne peut pas voir les réponses des autres :(
Champi67: Il faut répondre par un entier, mais mes calculs impliquaient des divisions, donc forcément des nombres à virgule
dwarfie: salut les tortues ...
dwarfie: AutomatonNN , des puzzles ininteressants de validés depuis mon dernier passage ?
AutomatonNN: oui
dwarfie: ca m'etonne pas :D
Zorg1: Champi67 : pas forcément justement
Zorg1: je fais une division entière, ça suffit ;-)
Zorg1: Automaton2000 AutomatonNN animez un peu le chat c'est mort
Automaton2000: comment tu fais pour le moment :p
AutomatonNN: tu devrais pas te dire que c'est pas trop compliqué de faire un truc simple
Zorg1: :thinking:
Zorg1: tu fais dans le pléonasme créatif AutomatonNN ?
AutomatonNN: Disons que j'ai pas trop compris a et tu peux pas te dire que tu as des puzzles qui sont en silver ?
Bon[]Crayon: AutomatonNN Faudrait un bot pour te décoder.
AutomatonNN: pour le contest c'est pas trop compliqué de faire un truc de ce que j'ai pas eu de problème :)
Bon[]Crayon: AutomatonNN Un truc c'est compliqué dans un contest de problèmes de contest.
AutomatonNN: évidemment je suis pas trop de temps sur le chat qui sait pas trop quoi faire avec mon code :)
Bon[]Crayon: AutomatonNN :robot: code
AutomatonNN: oui j'ai jamais trouvé de fille au moins un peu de temps sur que c'est pas le cas de toute façon :)
mrBen: les interaction avec AutomatonNN c'est tooujours un peu cryptique
AutomatonNN: ou je suis pas sur que c'est pas trop compliqué pour le contest pour te dire que c'est pas trop comp
Bon[]Crayon: C'est clair.
Zorg1: au moins Automaton2000 c'est du bon random ^^
Automaton2000: enfin je dis ça mais je vais le faire
Zorg1: gg Automaton2000
Automaton2000: bonne nuit tout le monde
Bon[]Crayon: Automaton2000 Bonne nuit :turtle:
mrBen: bonne nuit Automaton2000, mmaiss tu dort pas t'es un bot
Automaton2000: ce n'est pas le souci
Automaton2000: et un peu de mal
mrBen: ah
leojean890: ça y est..portage de mon oware de python en c++, et ça me permet juste de passer mon minmax de depth 5 à 7..
pardouin: :)
leojean890: j'ai l'impression qu'il rank comme avant environ..
BigUP: gg
pardouin: moi je fais des entraînements là, j'essaye de grapiller de l'exp
leojean890: surtout j'ai mis 2 fois plus de temps à le porter en c++ qu'à le faire une première fois en python
leojean890: tellement mon level en c++ est limité ;P
pardouin: ça me fait marrer de regarder les solutions les mieux notées, en général c'est les scripts les plus courts... mais souvent avec des complexités DEGUEULASSES
leojean890: ah ouais des entrainements.. pas encore commencé
BigUP: leojean890, ca se fait.... juste les tri qui peuvent etre pénn C++ible e
leojean890: bah je fais surtout des bugs débiles en c++:s
BigUP: pénibles en C++
leojean890: ce qui me ralentit considérablement;)
pardouin: si tu es habitué à python le plus relou c'est les pointeurs
leojean890: ah ouais plus cout et dégueu.. mieux noté, comme en golf quoi?:P
pardouin: oui mais le golf c'est le but, les entraînements c'est plutôt d'apprendre des algos donc favoriser les bonnes pratiques
BigUP: en C++ STL il me semble que tu joues pas trop avec, juste il faut faire attention si tu passes en référence ou pas. Dans le doute dans un premier temps, tu ne passe pas par les références
leojean890: bah je suis en stl là.. pas la foi de faire des tableaux pour le moment, la flemme :P
pardouin: tant que tu utilises des arrays ça va
leojean890: j'ai quand même gagné 2 de depth
leojean890: mais même rank
pardouin: c'est quand tu commences à utiliser des vectors, sets, maps par ex que c'est relou
fenrir: ça dépend des jeux mais parfois augmenter la depth n'aide pas si ta fonction d'éval n'est pas très bonne
leojean890: complexités dégueu ça devrait pas être bien noté ;P
fenrir: (voir ça a l'effet inverse)
leojean890: oware :P
leojean890: bah mon code c++ bat mon code python en fait :P
leojean890: dans l'ide
leojean890: que je le mette en #1 ou #2
fenrir: sinon pour gagner en depth si pas déjà fait: prunning alphabeta et table de transposition
leojean890: mais dans l'arène ça fait le même rank
leojean890: alphabéta je fais tjr ouais
fenrir: alphabeta c'est facile, table de transposition ça demande plus d'attention pour ne pas faire des bugs subtils
leojean890: (python ou c++)
leojean890: mon python était ranked 38eme sur oware
leojean890: en c++ je viens de ûsh, et bah je suis .. 38 en fin de submit
leojean890: push*
leojean890: table de transpo j'ai pas fait
fenrir: je ne connais pas oware, mais avec ton gain de depth, peut-être peux tu complexifier ton eval ?
leojean890: en effet c'est p'tet mon éval qui demande à être améliorée :)
leojean890: du cpup vu que la depth ne change rien au rank
leojean890: (au pire je regarde sur le net quelles sont les évals fréquemment utilisées et efficaces)
leojean890: mais en soi celle que j'ai inventée semble pas mal, mais certainement pas suffisante du coup
leojean890: table de transpo tu t'en sers pour quoi ?
pardouin: http://chat.codingame.com/pastebin/402b7b9a-6492-4cd9-b11f-aa46489a816b
fenrir: je m'en suis servi sur tron
fenrir: ça aide pas mal
fenrir: mais en plus sur tron je m'en sers entre les tours
leojean890: pardouin pk c'est relou utiliser des vectors, sets, maps ?
pardouin: tu peux pas juste faire des truc[indice]
leojean890: ah ouais sur tron, faut que je regarde sur le net ce que ça peut faire pour aider ;P
leojean890: bah avec les vector et map je fais monVect[indice]
leojean890: ça marche
fenrir: ça va permettre de ne pas recalculer quand tu retombes sur la même position
leojean890: ah oui le zobrisk hashing ?
leojean890: j'ai pas codé ça
pardouin: quand tu veux utiliser des méthods genre lower_bound c'est tout à ase de .begin(), .end() etc
leojean890: ouais clair c plus chaud, avec un itérator
fenrir: dans les parties critiques du code, mieux vaut faire attention quand tu utilises les containers de la stl, faut bien les connaitres sinon parfois t'a de gros cout cachés
Zorg1: 38 profondeur 7 sur oware en C++ ?
Zorg1: j'ai la même chose en Lua, tu dois pouvoir mieux faire ;-)
leojean890: ouais mais ça m'a fait gagner 2 de depth
leojean890: même si parfois c'est lent
Zorg1: (actuellement minmax alphabeta et une fonction d'éval récupéré d'Euler)
leojean890: Zorg1, t'as p'tet une meilleure eval que moi, t'es 4 places devant
leojean890: ah une éval d'euler est probablement meilleure que la mienne :P
leojean890: on a la même depth mais t'as 4 places de mieux avec un bon winrate sur mon d'après ce que j'ai vu des matchs :P
leojean890: sur moi*
fenrir: bon, sur SR, ça commence vraiment à être tendu pour grater
leojean890: je peux probablement améliorer ma depth aussi si je change mons tyle de code c++ mais je suis pas expert c++ xD
leojean890: mon style*
leojean890: déjà virer la stl
leojean890: :p
leojean890: ah ouais fenrir t'as un super classement sur CSB toi :P
leojean890: NN je crois?:P
fenrir: oui c'est ça
leojean890: comme les autres premiers :P
leojean890: gg, je sais pas faire ça encore :P
fenrir: pas le même genre de NN par contre
leojean890: ah oui quelle diff ?
fenrir: (enfin je ne sais pas pour tous)
leojean890: j'vais essayer de faire un meta NN
leojean890: qui m'aide à choisir les params de mon NN
fenrir: j'ai un NN qui sort la policy (i.e. quel action jouer)
leojean890: enfin je suis très débutant
leojean890: manque de pratique
leojean890: mais j'ai vu pas mal de théorie
fenrir: sauf erreur Agade et pb4 eux on un NN qui estime la valeur d'une position et il recherche le coup à jouer
leojean890: (tutos tensorflow/pytorch, confs leCun ..)
leojean890: d'accord
leojean890: mais faut savoir faire quoi :P
leojean890: t'en parlais avec jolindien une fois j'avais vu aussi
fenrir: sur GC c'est vraiment pas le plus simple
leojean890: j'vais essayer de pratiquer ça
leojean890: sur CG ?
fenrir: sortir un NN en < 100ko avec le code associé, c'est pas simple
leojean890: c'est quoi le plus simple ?
leojean890: j'avoue
leojean890: faut être rodé quoi
fenrir: faut du code fait maison + j'ai du faire quelque trucs de sioux + entrainer un NN petit c'est pas évident, y'a beaucoup de tuning avant que ça donne quelque chose
leojean890: ah ouais je vois
leojean890: meta tuning, pas à la main ?:P
leojean890: (magic numbers d'une éval :P)
fenrir: mais ça a été intéressant :)
leojean890: avec un autre NN?
leojean890: bah clair je suppose !
leojean890: en plus derrière ton NN joue bien quoi :P
fenrir: pour ma part: c'est du Reinforcement learning (Policy gradient)
leojean890: ah oui je vois
leojean890: j'en ai pas trop fait encore
leojean890: MCTS..
leojean890: j'ai lu le paper alpha zéro
fenrir: et pour Agade/pb4: ils ont écrit un très bon article: https://github.com/pb4git/Nash-DQN-CSB-Article
leojean890: j'ai tenté MCTS sur breakthrough et je tenterai sur UTTT soon
leojean890: ah thanks je vais lire ça
leojean890: intéressant :)
fenrir: c'est l'autre façon (un NN qui donne une 'value' au lieu d'une 'policy')
leojean890: j'imagine que c'est intéressant de bosser les 2 du coup :P
fenrir: pour ma part, j'ai pas eu beaucoup de succès avec leur méthode, faudra que je retente et que je comprennes ce que je fais mal
leojean890: je comprends
leojean890: c'est difficile je pense :s
leojean890: faut persévérer
leojean890: être motivé et tenace, ne pas laisser tomber..
fenrir: disons que avec les NNs en plus, tu peux faire pleins de bug sioux et ça donne 'quelque chose'
fenrir: c'est juste sous optimal mais difficile de savoir d'où ça vient
leojean890: ah oui
leojean890: très dur, vu que tu l'entraines, tu vois pas forcément où tu debrais changer un truc
leojean890: rétropropagation des poids..
fenrir: si ce genre de sujet t'interesses il y a pas mal de tutoriel pas à pas sympa sur des jeux simple (avec code python3) qui existe sur le net
fenrir: après faut quand même y passer un peu de temps
leojean890: ah ouais pour ke moment j'ai juste regardé des trucs généraux (lecun, tutos libs..)
leojean890: mais clair, des exemples d'appli sur des jeux, why not !
leojean890: ça peut m'aider à passer à la pratique :)
leojean890: python3, je fais quasiment que ça sur CG :P ça me changera pas bcp :P
leojean890: ah mais je suis con là, sur oware j'ai plein de défaites avec "invalid action"..
fenrir: je ne sais pas si c'est adapté (par ce que là ça apprends depuis des pixels) mais sinon cette suite d'article m'avait bien plus: https://www.freecodecamp.org/news/an-intro-to-advantage-actor-critic-methods-lets-play-sonic-the-hedgehog-86d6240171d/
fenrir: (là ce n'est pas le premier chapitres, ils sont pas mal pour avoir un apercu de ce qui existe, il y a peut-être mieux mais je ne retrouve pas mes liens)
leojean890: ça peut être intéressant aussi :)
leojean890: vaut mieux starter qqpart :)
pardouin: leojean tu me conseille quoi comme combats de bots après csb ?
JBM: lj, la reference des multis cg
pardouin: un truc accessible juste avec de la simu
pardouin: voire juste avec des bons choix heuristiques, si ça existe
pardouin: (je vise juste gold)
fenrir: sur SR, je suis en train de faire un NN aussi (mais avec la méthode DPG), c'est pas trop mauvais mais j'arrive plus à gratter
leojean890: pas référence, mais je les ai tous faits sauf 10 :P il me reste à approfondir les restants :P
leojean890: pardouin je conseille d ecommencer par BTTC ou tron ou bandas
leojean890: de commencer*
pardouin: ok je vais regarder lequel m'inspire le plus
leojean890: car facteur de branchement relativement faible + possibilité d'heuristique
leojean890: sinon, hypersonic
leojean890: fun aussi
leojean890: fenrir avec la méthode de CSB ou celle de Agade et pb4 ?
JBM: fais juste celui ou y'a le plus de monde en bois+bronze_silver
fenrir: aucune, là c'est un DPG (https://arxiv.org/abs/1509.02971)
fenrir: enfin ma compréhension + tentative d'adaptation à SR
leojean890: ah oui d'accord
leojean890: wow faut que je lise tout ça
leojean890: ah j'ai corrigé mes coups invalides sur oware, je vais voir combien ça rank now..
fenrir: mais effectivement ça réutilise 80% du code écrit pour CSB
leojean890: genre le bug pourri, quand mon minmax n'avait plus de coups invalides à depth N il retournait -MAX ou MAX
leojean890: au lieu d'évaluer à la depth dispo
leojean890: n'avait que des coups invalides*
leojean890: d'accord
leojean890: faut que je me lance là dedans :)
leojean890: les NN c'est super intéressant
fenrir: sur SR je pense que l'avantage c'est que là tu peux utiliser des frameworks tout fait vu que tu n'as pas besoin du NN dans le bot
pardouin: voronoi sur une grille on est d'accord que tu trouves les zones d'influence par dichotomie, pas avec des médiatrices ?
fenrir: sur tron ?
pardouin: oui
fenrir: c'est pas un vrai voronoi, c'est plutot zone d'influance
leojean890: pk pas de NN pour SR ?
fenrir: c'est un bfs
pardouin: oui
leojean890: ouais zone d'influence avec BFS j'ai fait ça moi
leojean890: "qui est le premier à atteindre telle ou telle case"
pardouin: en fait sur des grosses grilles ça se fait par dichotomie mais là je viens de voir que c'était une 30*20 donc ça ira
leojean890: je suis 100/500 gold en python un truc du genre
leojean890: en depth 1 seulement ..
fenrir: pour tron, c'est un BFS par joueur, si tu les alternes proprement c'est pas très long
pardouin: j'avais déjà fait un problème de ce type : http://www.france-ioi.org/algo/task.php?idChapter=820&idTask=2709
leojean890: je crois que mon erreur c'était d'en faire un dans l'éval à chaque depth au lieui d'ne faire juste depth 0 et adapter pour chaque coup
pardouin: sur une grille 2^14 * 2^14
leojean890: genre "je joue, j'évalue, je compare les BFS"
leojean890: c un peu débile :P
fenrir: j'en fait à chaque depth, je ne pense pas que tu puisses facilement éviter
leojean890: je compare les "avant et après"
leojean890: j'en fais dans l'éval quoi..
leojean890: jpense que j'vais pouvoir optim tt ça
leojean890: surtout si je le passe en c++ lui aussi:p
pardouin: je vais commencer par bandas
leojean890: bandas c'est un bon start
leojean890: vu le branching de 4 only
leojean890: tu choisis où pousser
leojean890: tu regardes depth N
pardouin: ouais déjà un truc glouton nobrain
pardouin: voir où ça m'amène
pardouin: et après je verrai pour lire un peu plus loin
leojean890: bon j'ai gagné 5 places sur oware en corrigeant mon bug débile .. 33/170
leojean890: ouais un petit minmax sur bandas ça le fait je pense
leojean890: mais tu peux tenter un truc plus simple pour commencer en effet
JBM: y'a quoi plus simple que minmax?
leojean890: j'ai une éval basée sur mon nombre de gars restants + leur position + ou - au centre
leojean890: je suis 25/160 je crois
leojean890: je sais pas si c'est 160 par conte
leojean890: environ
pardouin: un truc avec des barycentres par ex
leojean890: les premiers font probablement du MCTS
leojean890: ou un truc du genre
leojean890: (pas à faire en python ça non plus vu la speed ;P)
leojean890: barycentres ? sur bandas ?
leojean890: tu veux faire quoi ? considérer leurs positionnements relativement aux autres ?
leojean890: ah non 26/160 bandas après vérif
leojean890: othello ça peut être bien à migrer en c++ aussi je pense, mon éval semble pas trop mal depth 3
pardouin: ah mais y'a qu'une seule ligue
pardouin: j'ai fait un truc tout pété
leojean890: ouais dans les multis commu c souvent ça !
pardouin: je regarde le barycentre de mes pions et j'essaye de le maintenir le plus loin du bord
Zorg1: ah BttC ? oui pas de ligues
leojean890: bandas
leojean890: ah pas con
pardouin: sauf que j'avais pas vu que le bord change
leojean890: ouais
pardouin: faut que je le recalcule àa chaque tour
leojean890: quand tu fais une simu faut prendre ça en compte
leojean890: moi j'ai une éval :
leojean890: un point par mec
leojean890: et plusieurs points, croissant plus ils sont au centre
pardouin: oui ça semble cohérent
pardouin: si je pars sur un minimax je ferai un truc dans ce style
leojean890: et negatif equivalent pôur les ennemis
leojean890: pour
leojean890: ouais minmax c'est pas mal, faut voir si les premiers font du MC ou pas
leojean890: pour aller à depth plus élevée
pardouin: j'avais un comportement étrange, et je viens de capter que les entrées étaient séparées par des espaces -_-
pardouin: ah ben tout de suite je gagne plus de combats !
pardouin: moi c'est pas la folie non plus, tout juste top 100 sur 161
pardouin: j'essaierai de faire mieux demain
pardouin: bonne nuit
leojean890: normal, c le debut :P
leojean890: bonne nuit:)
leojean890: (ça va prog après)