Chat:Fr/2021-05-23
BlaiseEbuth: Yo tout l'monde ! Automaton2000 ! AutomatonNN ?
Automaton2000: qui est ce qui est le plus rapide
BlaiseEbuth: La tortue Automaton2000.
Automaton2000: je suis au dessus du boss
BlaiseEbuth: Mais sous la tortue Automaton2000...
Automaton2000: ah non, c'est pas la meme chose que le this en c++
BlaiseEbuth: Non.
-Cile-: salut les tortues !
BlaiseEbuth: T'as vu Automaton2000, -Cile- a appris en deux semaines ce que tu ne sais toujours pas dire après des années...
Automaton2000: non y a pas grand monde qui a du sens
BlaiseEbuth: Tu es dans le déni Automaton2000...
Automaton2000: c'est parce que pour l'instant, je ne suis pas passé
BlaiseEbuth: Bah fait en sorte Automaton2000 !
Automaton2000: mon submit est pas fini ?
BlaiseEbuth: Tu vas pas rejeter la faute sur le matériel en plus Automaton2000 ?!
Automaton2000: c'est comme le reste de ton code
BlaiseEbuth: (╯°□°)╯︵ ┻━┻
-Cile-: Eh ben, je ne sais pas ce que tu as fait à Automaton2000 mais c'est ta fête aujourd'hui !
Automaton2000: je pars de loin niveau algo, j'ai du mal avec le mode d'édition de l'ide cg, et aussi un peu ...
BlaiseEbuth: ... les tortues, Automaton2000 ?
Automaton2000: juste parce que le chat
-Cile-: mais non pas un chat, une tortue !
-Cile-: tu ne comprends rien Automaton2000
Automaton2000: si t'as un peu de mal à comprendre
BlaiseEbuth: :3
-Cile-: ok...
BlaiseEbuth: Automaton2000 en mode relou aujourd'hui...
Automaton2000: et ça reste très alenti)
MohamedAliJarmoud: http://chat.codingame.com/pastebin/f2b6002e-0885-4f9e-b696-f4a3b8908e1f
MohamedAliJarmoud: lis.append(mountain_h)
index = lis.index(max(lis))
-Cile-: ouiii ???
BlaiseEbuth: L'ide est un peu plus à gauche MohamedAliJarmoud
philRG: o/ humains et Automaton2000
Automaton2000: en effet ça peut être aussi
philRG: sais-tu comment changer le mode d'édition de l'IDE Automaton2000 moi aussi j'ai du mal
Automaton2000: il se passe quoi en cas de bug
philRG: je sais pas trop mon ami Automaton2000, à part prier je ne vois pas de solution
Automaton2000: bon allez, je vais me coucher
dwarfie: hé hé
philRG: Automaton2000 bonne nuit on prend la relève
Automaton2000: et c'est la que ça coince
dwarfie: :rofl:
philRG: :joy:
dwarfie: et en plus il dit ca pile au moment ou mon run ralentit
dwarfie: :D
philRG: on en pleurerait de bonheur, un bot capable d'empathie ;-)
Bon[]Crayon: Salut :ghost:
**Bon[]Crayon souhaite une bonne journée à Automaton2000.
Automaton2000: y a un thread sur le forum
dwarfie: Automaton2000 : "thread is threat"
Automaton2000: je fais du c ou du c++
dwarfie: Automaton2000 : tant que c'est pas du python , tu fais ce que tu veut ...
Automaton2000: t'es dans un langage que je ne pouvais pas le dire :d
BlaiseEbuth: :rofl:
sosoooo: vous êtes anti-python ? :grin:
dwarfie: mais non , on est juste pour les vrais langages pour vrais programmeurs... c'est connu ... :D
sosoooo: vs êtes ici depuis combien d'années ? ça me fume j'ai l'impression vous vous connaissez depuis 10 ans
dwarfie: bon , oware c'est fait ... maintenant mon soucis c'est que mon premier tour est de 85k a 120k roullout et la ca vient pas de mon code ...
dwarfie: on se connait pas depuis aussi longtemps que ca ... et d'ailleurs , je suis un des plus ancien et la plateforme existe pas depuis 10 ans ;)
BlaiseEbuth: T'étais là un an avant moi ! Quel vieux.
sosoooo: mdrrr c'est fou de créer un groupe de potes sur un chat en ligne comme ça
sosoooo: vs vs êtes déjà rencontrés ?
dwarfie: donc un DES plus anciens ... et moi moins d'un an apres la creation de CG il me semble ...
dwarfie: :D
dwarfie: toi aussi tu fait partie des vieux BlaiseEbuth ;)
BlaiseEbuth: Ouai... Presque 7 ans... J'ai vraiment qu'ça à foutre.
dwarfie: les nains et les biablotins n'ont pas d'age
BlaiseEbuth: dwarfie est vieux :older_man:
dwarfie: j'avais interdit de mettre ma photo screugnegneu :rofl:
sosoooo: mdrr vous répondez à aucune question :laughing:
dwarfie: on a tous 20 ou 21 ... ce qui compte , c'est la base ;)
dwarfie: base 10 , base 16 , base 36 , ....
BlaiseEbuth: J'ai passé 1/4 de ma vie sur CG ! :scream:
sosoooo: vous êtes programmeurs pro ?
dwarfie: eh eh BlaiseEbuth a encore sevit sur le forum ... meme pas besoin de voir qui a edite le post ...
dwarfie: "on met pas son code bordel" :D
BlaiseEbuth: :no_mouth: C'pas moi
BlaiseEbuth: Ca dépends de ce que tu entends par pro.
dwarfie: "Code deleted by a moderator. //This is a competitive mode, please don't share code." ... mais ma phrase aurait fait pareil :D
BlaiseEbuth: Et par programmeur.
dwarfie: y'a bon programmeur et mauvais programmeur en plus chez les pros :smiling_imp:
sosoooo: bennn vous faites de l'informatique votre métier ?
sosoooo: mdrrr et ceux qui codent en python font partie des mauvais ?
pardouin: <- code en Python
BlaiseEbuth: Hop! la réponse qui viens toute seule
pardouin: XD
dwarfie: c'est meme pas une question de langage ... mais de juste etre capable de copier coller des bouts de code sans savoir ce que ca fait ... ah ben donc oui en fait :D
sosoooo: heeeeeee python on fait pas que du copié collé
pardouin: non mais il provoque cherche pas
pardouin: python permet un bon niveau d'abstraction, c'est un avantage dans plein de situations
dwarfie: non, ca fait aussi des import de tous les cotés parce que code une fonction qui fait le produit d'une liste c'est trop compliqué , c'est vrai ...
pardouin: mais si tu veux un peu faire des performances c'est pas le langage à utiliser
sosoooo: tu parles de numpy ? :sweat_smile:
pardouin: la dernière version ajoute math.prod
pardouin: l'équivalent de sum pour le produit
Bon[]Crayon: pythonpro == php
dwarfie: Bon[]Crayon ... maintenant t'as plus qu'a faire tes puzzles en php ... parce que seulement 3 pour l'instant c'est la honte :D
WhatTrickeryIsThis: Crayon comment t'as réussi a changé l'avatar?
WhatTrickeryIsThis: y à eu un reset?
Bon[]Crayon: C'est sur la page de ton profil.
WhatTrickeryIsThis: ptin je dois penser à changer le singe xD c'était un troll et il est resté
Bon[]Crayon: Passe la souris sur ton avatar.
BlaiseEbuth: C'est un singe ou c'est un troll ?
WhatTrickeryIsThis: je sais bien mais tu vois que t'es resté en mode clémentine assez longtemps
BlaiseEbuth: Genre 2-3 jours
WhatTrickeryIsThis: faut attendre un reboot je crois
WhatTrickeryIsThis: à l'epoque il changeait direct
BlaiseEbuth: Oui mais. Ils vont pas allouer de la ressource pour reload les avatars... Faut pas déconner
BlaiseEbuth: Tout est alloué aux trackers.
WhatTrickeryIsThis: c'est depuis qu'y à les automatons, ils bouffent tout
WhatTrickeryIsThis: ils analysent tous les submits en secret, c'est ça qui ralentit tout
WhatTrickeryIsThis: et ils revendent au marché noir
BlaiseEbuth: Automaton2000 un commentaire ?
Automaton2000: parce que vous avez raison
BlaiseEbuth: :scream:
Bon[]Crayon: :smiling_imp:
WhatTrickeryIsThis: chacun son business, mais bon tu nous ralentpit là Automaton2000
Automaton2000: un tout petit peu de temps à autre
WhatTrickeryIsThis: :(
Magus: vas y Automaton2000 partage les codes que tu voles
Automaton2000: tu connais pas le domaine tu reconnais pas le pb
philRG: quelqu'un sait pourquoi l'affichage 3D de dice duel fait autant ramer le processeur
philRG: ma carte vidéo est à la ramasse
Littleyounes: merci la blockchain*
BlaiseEbuth: stoi la blockchain
dwarfie: et voila , y'a des sado maso sur CG maintenant ... Automaton2000 , c'est encore ta faute ca
Automaton2000: c'est pas le même que dans le cas que je ne connais pas le jeu de mots
dwarfie: Automaton2000 ... tu connais pas le jeu de la tortue en logo non plus
Automaton2000: il a l'air de marcher
dwarfie: evidemment qu'il marche mais toi tu peut pas y jouer Automaton2000 ... faut raper : run "tortue" ... et t'en es incapable ...
Automaton2000: le java c'est pas le pire
**dwarfie se retient difficilement de répondre la :D
BlaiseEbuth: C'est un des pires. Mais est-ce LE pire ? Faut voir... :thinking:
jdeveil: salut tlm ;)
BlaiseEbuth: salut ts
Bon[]Crayon: o/
Bon[]Crayon: Automaton2000 Est-que tu connais le javathon ?
Automaton2000: dans toutes les branches... :3
Bon[]Crayon: Automaton2000 Maîtresse Tortue sur une branche perchée ...
Automaton2000: oui si tu fais ça pour un non
dwarfie: Automaton2000 a decouvert negamax
Automaton2000: je fais en sorte que les gens ont du mal à comprendre pourquoi
jdeveil: Y a-t'il des pro du MCTS sur le chan ?
M_C: Pose ta question on verra bien si on arrive à répondre :)
jdeveil: ok :)
**dwarfie tend _T_S a M_C :D
jdeveil: Je lis pas mal de doc sur le MCTS depuis le challenge
jdeveil: j'ai vu les 4 phases de celui-ci : Sélection d'un noeud dans l'arbre, expansion du noeud (lorsqu'il est pas complètement visité), simulation du jeu par le nouveau noeud et la backpropagation du résultat
jdeveil: cependant, je vois que lors de la phase de simulation, l'algorithme ne retient pas les étapes de jeu par lesquelles il pass
jdeveil: +e
jdeveil: il n'y a que la phase d'expansion qui s'en charge
jdeveil: j'ai beau chercher, je ne trouve pas d'explication à cela.
jdeveil: quitte à étendre les noeuds visités du jeu, pourquoi ne pas en profiter pour au moins les créer lors de la phase de simulation ?
WhatTrickeryIsThis: créer les noueds lors de l'expand
dwarfie: la phase de simu , c'est juste un mc qui donnera une valeur de base au 2 que tu explore ... ca sert a rien de creer tous les noeuds d'une branche perdante ...
dwarfie: ... au noeud que ...
M_C: Tu perdrais trop de temps et de mémoire à sauvegarder tout
M_C: car au final tu ne vas garder qu'une partie de ton arbre
jdeveil: ok
jdeveil: du coup on ne garde pas non plus les étapes si elles aboutissent à une victoire
dwarfie: euh non , au final tu gardes tout l'arbre ... d'ou l'interet de ne pas le remplir de noeuds mauvais
jdeveil: il faudra attendre l'expand pour ca
M_C: L'idée c'est que tu jettes un oeil dans une direction pour voir si ca vaut le coup de l'explorer
WhatTrickeryIsThis: ça va naturelement garder plus car il sera suceptible d'être élu au prochain select
jdeveil: ok je commence à y voir un intérêt maintanent
jdeveil: maintenant
dwarfie: on explore pour voir si ca vaut le coup d'expand
M_C: Il faut vraiment que tes simulations aille le plus vite possible. Ce qui compte c'est en faire beaucoup
jdeveil: juste pour voir vers où étendre l'arbre...
jdeveil: ok je comprends
jdeveil: l'éventualité de conserver la simulation si elle est gagnante c'est pas un plus ?
dwarfie: non ... vu que le joueur adverse a peut etre jouer le pire coup lors du random
WhatTrickeryIsThis: ça le fera tout seul aux derniers tours de jeu
jdeveil: ouais ok
M_C: En fait ça peut valoir le coup si ton arbre n'est plus très grand
M_C: pour ne plus explorer toujours les mêmes choses
jdeveil: genre si le MCTS arrive à trouver tous les coups, inutile de le laisser recalculer à chaque fois...
M_C: mais bon ca te rajoute des if pour rien
jdeveil: du coup le MCTS, c'est un parcours en largeur (pour la sélection et expansion) et un parcours en profondeur (pour la simulation)
jdeveil: et la backpropagation aussi
M_C: la backpropagation ton heuristique en gros
jdeveil: ok 2 algos en un. et on étends l'arbre que sur le parcours en largeur, pour optimiser la rapidité d'exécution du parcours en profondeur
jdeveil: ?
jdeveil: tu veux dire quoi par ton heuristique ?
M_C: heuristique du choix du meilleur noeud à explorer
jdeveil: c'est pour remplacer l'UCB ?
WhatTrickeryIsThis: c'est plus un algo en profondeur max, qui autorise un peu en largeur grâce au C
M_C: oui je l'ai mal dit c'est l'UCB l'heuristique qui se modifie au fur et à mesure de tes simulations
jdeveil: la backpropagate c'est bien juste pour mémoriser quelle branche gagne plus que l'autre ?
dwarfie: c'est juste remonter un score
jdeveil: WhatTrickeryIsThis: oui, profondeur max avec le coeff qui permet délargir un peu
dwarfie: et l'ajouter au score courant en incrementant le played
M_C: Par contre, une fois que tu ton algo tourne, pense à bien optimiser ta constante. Le racine de 2 n'est pas forcément la meilleure
jdeveil: actuellement je fais ça à l'arrache sur uTTT pour me faire la main
jdeveil: mon UCB c'est C* sqrt(...)
M_C: Oui c'est le mieux pour s'entrainer
jdeveil: j'ai pas encore tuné le C pour le moment
dwarfie: pour ce faire la main , c'est pas le plus simple ... bandas est plus abordable ...
dwarfie: ou connect
jdeveil: durant tout le contest, c'est uTTT qu'on m'a conseillé... du coup j'ai commencé par celui-là :p
dwarfie: ben bandas , y'a que 4 coups possibles a chaque tour ... connect 4 , y'en a 4 au max ...
M_C: Ah oui c'est vrai qu'il y a conect4 maintenant
dwarfie: connect 4 .... 7 au max
dwarfie: connect 4 .... 9 au max
WhatTrickeryIsThis: utt, faut être particulierement rigoureux sur le jeu c'est chiant
**dwarfie va y arriver
dwarfie: ouf
jdeveil: connect c'est un puissance 4
jdeveil: ?
dwarfie: oui
jdeveil: donc 9 c'est le nombre de colonnes
jdeveil: ok
jdeveil: bandas, j'ai pas vu encore ce que c'était
jdeveil: combat de bot aussi ?
dwarfie: oui
M_C: https://www.codingame.com/multiplayer/bot-programming/bandas
M_C: Si tu veux t'entrainer sur les MCTS tu peux déjà faire ceux qui sont sur cette page :) https://www.codingame.com/learn/MCTS
jdeveil: justement uTTT il y est dessus :p
**dwarfie s'en veut d'avoir recommencer son bitboard de othello .... meme s'il sait qu'il y'avait surement une merde dedans ... il en chie :D
dwarfie: jdeveil ... je suis sur que je peut trouver une categorie pour le puzzle nintendo , mais faut pas le faire en premier pour autant :D
jdeveil: celui marqué cryptologie ?
M_C: C'est vrai qu'en regardant Bandas, il peut être sympa pour commencer MCTS
M_C: Même si UTTT est plus tentant avec son gros classement avec différentes ligues :)
dwarfie: c'est un peu pour ca que j'ai passé mon temps a le conseiller pendant le contest ...j'aurais mieux fait de trouver mon bug :D
jdeveil: autre question, les exemples de MCTS que j'ai vu pour le morpion étaient assez naïfs.
jdeveil: si l'adversaire a une chance de gagner, l'algo est capable de ne pas le bloquer car c'est qu'une éventualité.
jdeveil: je suppose qu'il doit y avoir des moyens de modifier ce comportement ?
dwarfie: alors que le morpion c'est clairement le jeu qui se termine toujours par un draw en principe ;)
WhatTrickeryIsThis: non, tu peux rien y faire, il prendra la branche qui perdra moins c'est tout :D
jdeveil: ya pas moyen de passer en mode "défense" pour bloquer l'adversaire avant qu'il gagne ?
M_C: Ca peut faire partie des stratégie pour affiner
M_C: tu peux supprimer des fils que tu sais mauvais
jdeveil: mais ces stratégies ce tune à quel niveau ? le UCB, le backpropagating ou ailleurs ?
M_C: mais il ne faut pas devenir trop selectifs car tu perdras en nombre de simulations
jdeveil: donc ce serai au moment de déterminer les moves possibles
M_C: dans ta fonction donner_fils par exemple
jdeveil: oui c'est ça les moves possibles... pour un état de jeu donné
M_C: mais il faut que ca reste facile à déterminer
jdeveil: ouaip... c'est peut être ça le plus chiant
M_C: sinon il vaut mieux laisser les simus faire. Si c'est clairement pas un bon coup, il ne sera pas exploré beaucoup
M_C: alors que des conditions un peu lourdes vont faire baisser ton nombre de simu énormément
jdeveil: ba le problème, c'est que c'est pas un bon coup pour moi, mais un excellent pour l'adversaire qui gagne direct s'il place sa marque à cette endroit
M_C: Tu peux aussi coder en dure certains coups dans certaines situations (en court circuitant le MCTS)
M_C: genre le premier coup au centre, il faut le hardcoder
M_C: encore que tu peux quand même faire des simus pour commencer à remplir ton arbre
jdeveil: coup de bol, pour le TTT 3x3, j'ai pas eu besoin, il s'est mis à jouer direct là
jdeveil: mais manquait de précision pour bloquer l'adversaire sur certains coups
pardouin: court-circuiter avant de lancer pour jouer les coups évidents (en regardant la depth 1) c'est facile, mais si tu veux reproduire ces courts-circuits à chaque étape de propagation, tu t'ajoutes des vérifs à faire donc tu auras moins de rollouts
WhatTrickeryIsThis: fait confiance à l'algo pour l'instant, si tu rajoute du merdier ça va bugger, un coups gagnant adverse => le tree se developpera à côté naturellement
pardouin: il faut tester pour voir si tu y gagnes ou opas
M_C: Jdeveil le MCTS marche pas très très bien s'il existe une strategie gagnante comme c'est le cas en 3x3
dwarfie: faut pas toujours faire confiance aux algos .... comme le montre la serie https://fautealgo.fr/
M_C: Car comme tu explore au hasard mais l'adversaire lui prendra toujours la solution optimal, le MCTS se fera avoir
jdeveil: oui c'est exactement ce que j'ai remarqué M_C
dwarfie: arf , c'est pas le lien ou y'a tous les episodes ... tant pis , ceux qui voudront , chercheront ...
jdeveil: du coup je cherche à lui éviter de se faire avoir, même sur un 3x3
M_C: Tu fais combien de simu ? tu comptes comment les matchs nuls ?
jdeveil: pour uTTT, j'ai pas encore modifié mon code
jdeveil: pour le TTT 3x3, les simus étaient pas nombreuses (200 par tour peut être)
jdeveil: en python ;)
jdeveil: les matchs nul sont comptés en nombre de marques sur la grille
jdeveil: sum(mes marques) - sum(marques opp)
WhatTrickeryIsThis: ils sont nuls si ça vaut 0 :/
M_C: Je demandais le match nul dans ta backpropagation. Tu le comptes 0.5 ?
WhatTrickeryIsThis: sinon celui qui a le plus de marks win
jdeveil: win: +1, lose: -1, draw: sum()-sum()
WhatTrickeryIsThis: ouch
jdeveil: c'est ce qui est remonté dans la backpropagation
jdeveil: à ce point ?
M_C: Essaye avec lose = 0 et draw = 0.5 peut-etre
WhatTrickeryIsThis: en quoi un win 5-2 fait gagner 3 fois plus?
WhatTrickeryIsThis: tu va traversé 1 fois la branche et attribuer un score 3
WhatTrickeryIsThis: c'est pas prévu par l'algo
M_C: en TTT 3x3 tu peux pas avoir plus de 1 de différence
WhatTrickeryIsThis: si ton evale dépasse 1 il va falloir tout revoir la partie exploration de l'ucb
jdeveil: pardon pour les draw c'est au dixième les sum :p
WhatTrickeryIsThis: c'est pas bon non plus
jdeveil: ils restent entre les bornes [-1;1]
WhatTrickeryIsThis: 5 marks - 2 marks => score +1 victoire
jdeveil: un draw en 5 et 2 mark c'est pas possible, il reste 2 emplacements vides ?
WhatTrickeryIsThis: c'est possible
jdeveil: ?
M_C: WhatTrickeryIsThis parle de UTTT pas de TTT 3x3
jdeveil: ah ok
WhatTrickeryIsThis: ah? putin c'est quoi ttt 3 xD
M_C: en 3x3 je pense que un draw est un draw (pas de gagnant) sinon c'est forcément le premier qui joue qui gagne
jdeveil: sur uTTT c'est le nombre de mark dans la grande grille qui compte pour déterminer le vainqueur en cas de draw ?
WhatTrickeryIsThis: le ttt 3 un min max depth 5 => gg
M_C: oui mais ilvoulait s'amuser avec un MCTS :)
dwarfie: ttt ... 3 if et soit ca gagne soit ca fait draw
dwarfie: si on en est la ;)
M_C: un bon réseau de neurones sinon... :)
jdeveil: lol
jdeveil: on verra ça pour la prochaine étape: MCTSZero
jdeveil: du coup, pas de moyen simple de forcer l'algo à passer en mode défense (sauf contrôler les next possibles moves)
M_C: Ca n'a pas de sens dans un MCTS car le jeu normalement n'a pas de stratégie gagnante
jdeveil: je vais donc refaire mon algo en C++ histoire de gagner en nombre de simulations et tuner peut être ici et là les fonctions UCB, next_moves, etc...
M_C: de toute façon MCTS avec Python c'est mort :)
jdeveil: dans un minimax ça a plus de sens ?
jdeveil: oui c'était pour commencer rapidement :p
jdeveil: le passage de l'un à l'autre me pose pas trop de problèmes... c'est plus le temps qui me manque ;)
M_C: bah minimax tu dois pouvoir explorer tous les cas je pense
jdeveil: avec un minimax l'algo passerai en mode défense pour contrer l'adversaire quand il aligne 2 marks ?
dwarfie: bon ... generer rapidement tous les coups possibles de othello c'est faire ... maintenant precalculer pour l'application des coups , sinon ca va etre une cata :D
jdeveil: bon je vais faire sortir les enfants un peu, ça leur fera prendre l'air.
jdeveil: et moi ça me permettra de commencer à réfléchir à passer en C++
jdeveil: a tout les gens et merci pour vos éclaircissements et vos conseils ;)
BlaiseEbuth: np
philRG: sur uttt: 3 marques: 100 points, 2 marque: 10 points, 1 marque: 1 points. 1 grande grille: 1000 points. C'est comme à l'eurovision :)
philRG: suffit d'empêcher l'adversaire de jouer au prochain tour
dwarfie: ah ... comme a l'eurovision ... donc a la fin , c'est la france qui est ridicule ? ;)
3141948: Meilleure place depuis 30 ans
dwarfie: mouais ... parce qu'on finance en grande partie ...
BlaiseEbuth: Moi je finance que dalle !
dwarfie: encore un qui paye pas d'impots ...
BlaiseEbuth: Manquerait plus que ça...
Zorg1: c'est calme ici
jdeveil: salut Zorg1
jdeveil: parait que t'as utilisé un SA sur le contest Amadeus ?
poipoiAH: oui a 1h du matin les gens normaux dorment
jdeveil: ils savent pas ce qu'ils ratent ;)
jdeveil: ba justement, je voulais savoir :p
poipoiAH: une legende dit qu'il semblerait que le sommeil soit important ds la vie humaine. Jamais compris l'utilité mais semblerait que sa soit bien si des milliards de gens en profitent
jdeveil: c'est philRG qui m'en a parlé
jdeveil: poipoiAH: des nouvelles de l'équipe partie s'isoler dans une grotte ?
poipoiAH: ah oui c'est vrai que j'en ai entendu parler de c fou furieux non aucune
jdeveil: le fait de plus voir la lumière du jour ça influe comment leur cycle de sommeil ?
poipoiAH: ah déja plein d'etude a ce sujet
jdeveil: des journées de 28h... c'est les patrons qui vont être contents...
poipoiAH: qd t'es tt seul tu prend un rythme de vie particulier tu dors autant mais en cadence en mode deux fois dans la journée est moins longtemps
poipoiAH: tu manges mal tu prend du poids car tu modifie tout ton ton poinds enfin sa fait pas mal de degats en vrai mais je connais pas bien l'experience qu'il tente la
jdeveil: à suivre
poipoiAH: et la je suis en train de faire le puzzle de la semaine et je tombe sur une impace avec les stacks en c#
poipoiAH: vdm et j'aimerai bien finir avant de me coucher
jdeveil: j'ai pas regardé le pow
jdeveil: c'est dommage car demain ce ne sera plus le même :p
jdeveil: tiens on le voit où le puzzle de la semaine ?
poipoiAH: euh attends j'ai une idée
poipoiAH: https://www.codingame.com/ide/puzzle/container-terminal
jdeveil: c'est un facile ?
jdeveil: ah yes je l'avais commencé lui... mais jamais fini... Le test 3 me faisait chier
poipoiAH: nn ba persos j'avais presque reussi avec les stacks mais infoutu de trouver comment faire simplement le retour en arriere pour lui faire supprimer un element
poipoiAH: donc la je passe par des list
jdeveil: je suis parti du principe que tu stack tant que tu peux mettre une lettre plus petite, sinon tu passe à la pile d'à côté
jdeveil: mais visiblement ça marche pas sur le test 3
poipoiAH: ouaip ça j'ai le meme principe
poipoiAH: sauf que le probleme c que tu peux stacker
poipoiAH: sur une lettre precedente
poipoiAH: qui te libere la place pour la derniere lettre
poipoiAH: je suis pas clair je m'en rend compte en somme
jdeveil: 'JNFAEGMCEWC' je stack comme ça : ['JFA', 'NEEC', 'GC', 'M', 'W']
jdeveil: apperement c'est pas bon
poipoiAH: si ta un contenaire en troisieme colonne avec la lettre I et que d'un coup tu as une autre lettre du genre N G et M qui debarquent ba la faut revenir en arriere dans ta liste
poipoiAH: car t valeur sont plus les meme
jdeveil: ?
poipoiAH: j'ai jamais ete fort en explication hahah
poipoiAH: alors a 1h30 sa s'arrange pas
jdeveil: dans l'énoncé il dit qu'il faut pas trier... donc une fois stacké on touche plus non ?
poipoiAH: euh ok mais pour coding game une fois stacké j'entend l'enoncé easy sa donne quoi te ton coté
Remiavecuni: Bonsoir. Je pense que vous vous prenez la tête pour rien. Pour chaque nouveau conteneur, parcourez votre liste de piles déjà existantes. Dès que vous pouvrez le mettre sur une pile, mettez le, sinon essayez la pile suivante. Si ça ne marche avec aucune, faites une nouvelle pile.
Remiavecuni: * dès que vous pouvez
poipoiAH: ba la j'essaie avec des listes mais comme je parcoure une meme liste il crash
jdeveil: Remiavecuni: c'est ce que j'ai fais... mais ça stack visiblement pas correctement pour la suite que j'ai donné plus haut
jdeveil: et puis pour des arrivées comme : 'CBACBACBACBACBACBA', si tu stack comme tu dis, tu te retrouve avec 6 piles alors qu'il en demande que 3
Remiavecuni: Faux : avec le 1er CBA tu fais une pile, avec le 2ème "CB" ça fait une 2ème pile, puis le 2ème A est mis sur la 1ère pile
Remiavecuni: Le 3ème C est mis sur une 3ème pile
Remiavecuni: Puis ensuite tous les A sont mis sur la 1ère et les B sur la 2ème
Remiavecuni: et les C sur la 3ème
jdeveil: ah oui tiens exacte...
jdeveil: je vais tenter un truc :p
Remiavecuni: Si ça peut aider, mes piles sont des string et mon ensemble de piles est un vector<string> (C++)
jdeveil: en python j'ai aussi gardé les string pour les piles, et une liste (équivalent vector en cpp) pour l'ensemble des stacks
jdeveil: merde t'as raison... pourquoi j'ai voulu essayer de garder de la place pour les stacks à venir !
jdeveil: ça passe tout seul maintenant :p
jdeveil: trop con
jdeveil: ayé fini...
jdeveil: merci Remiavecuni
Remiavecuni: Faut pas anticiper le nombre de stack. Faut en ajouter une à chaque nouveau conteneur si besoin.
Remiavecuni: De rien. Ca y est, j'ai enfin aidé quelqu'un, maintenant je vais me croire intelligent.
jdeveil: ba oui... comprends pas pourquoi j'ai voulu faire ça... une connerie... ou alors il était 1h30 du mat quand j'ai codé ça :p
jdeveil: hehe
Remiavecuni: C'est sûr qu'à 1h46 ça passe mieux.
jdeveil: surement
jdeveil: poipoiAH: faut faire comme il a dit: tu déroule tes containers dans l'ordre, si tu peux empiler tu empiles, sinon tu passe au stack d'à côté.
jdeveil: et pour chaque container, tu repasses par tous les stacks pour vérifier
poipoiAH: ouaip sauf que je déroule pas mes containers dans l'ordre la et tt mon problème
jdeveil: ah oui... l'énoncé est clair :Sorting is an option too slow and costly to put in practice.
jdeveil: donc on touche pas à l'ordre
Remiavecuni: Question bête : on change de jour à quelle heure sur Codingame ?
jdeveil: le matin à 10h00 je crois
jdeveil: enfin le lundi matin à 10h00 on change de semaine :p
jdeveil: et là comme lundi est ferié, c'est possible que la semaine dure jusqu'à mardi
jdeveil: (ou alors ils ont un script qui change le potw automatiquement)
Remiavecuni: Nan c'est trop compliqué les scripts, il faudrait qu'ils soient dévelopeurs
jdeveil: argl ok... et un script lancé à la main ?
Zorg1: SA = Recuit Simulé
jdeveil: ah Zorg1 se réveille :p
Zorg1: (oui je répond une heure après ^^)
BabelO: ah ok je peux aller au lit aec de la lecture :)
Zorg1: j'avais utilisé ça pour mon premier bot en Lua, mais après c'est surtout un GA que j'ai utilisé
Zorg1: Sinon là où ça marche plutôt bien un SA c'est le Jeu d'optim Star*Craft
Zorg1: A*Craft, pardon
jdeveil: je vois pas bien l'apport du SA pour CSB ?
jdeveil: c'est quoi la température du SA dans CSB ? la scoring de la position du pod par rapport aux autres ?
poipoiAH: une question idiote comment je fais pour parcourir ma liste de conteneur sachant qu'elle bouge comme les conteneurs des docks et que le foreach n'aime pas qu'une liste bouge ou qu'un element qu'il utilise bouge
jdeveil: poipoiAH: tu la parcours qu'une seule fois ta liste dans le foreach, pour un seul conteneur.
jdeveil: une fois que tu as trouvé le bon stack, tu stack ton conteneur et break
jdeveil: pour passer au conteneur suivant
jdeveil: du coup le foreach il verra rien puisque tu break au moment de modifier ta liste
Zorg1: Bah la temperature c'est seulement le paramètre qui permet de savoir si une configuration "moins interessante" peut être exploré
Zorg1: ensuite le + important dans un SA c'est comment tu passes d'une conf à l'autre, en changeant quelques paramètres (angle/vitesse)
Zorg1: et tu as besoin d'une fonction d'évaluation de ta position (comme pour un GA) qui te servira comme "énergie"
Zorg1: la température descend au cours de ta simu, l'idée du SA c'est de pouvoir exploré des configurations moins avantageuse mais qui peuvent te sortir d'un minimum local
jdeveil: ok ta température c'est angle/thrust et l'énergie le scoring du pod. et tu tests des angles/thrust pour trouver d'autres énergies en essayant ici de maximiser le score
Zorg1: euh non la température c'est un paramètre à côté
jdeveil: du coup c'est une sorte de simu depth 1 ?
Zorg1: les modifs/angle thrust c'est l'agitation thermique
jdeveil: l'agitation thermique ! j'ai lu trop vite l'article moi :p
Zorg1: pas forcément, là j'avais 6 mouvements que je scorais après les avoir fait
Zorg1: et je modifiais un ou plusieurs des mouvements, comme pour un GA
Zorg1: t'es pas limité à une depth 1
jdeveil: et quel est l'avantage par rapport à un GA ?
jdeveil: le fait de jouer sur la descente en température ça permet de trouver plus vite que la GA full random ?
Zorg1: pas vraiment comparé, moi c'était plutôt pour tester
jdeveil: ok tant pi
Zorg1: le GA n'est pas vraiment full random, il va sélectionner un ensemble de solutions probables
Zorg1: après bon j'avais envie de faire un autre SA après A*Craft
jdeveil: ... le mien est full random dans le range de mouvements autorisés
jdeveil: j'ai pas discrétisé l'angle et le thrust
Leoduyanh: :football:
jdeveil: bon c'est l'heure pour moi...
jdeveil: ++ et à demain les cop1 ;)