Chat:Fr/2021-05-23

From CG community
Jump to navigation Jump to search

Default avatar.png DidierTAH: hello

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)

Default avatar.png MohamedAliJarmoud: http://chat.codingame.com/pastebin/f2b6002e-0885-4f9e-b696-f4a3b8908e1f

Default avatar.png 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:

Default avatar.png sosoooo: vous êtes anti-python ? :grin:

dwarfie: mais non , on est juste pour les vrais langages pour vrais programmeurs... c'est connu ... :D

Default avatar.png sosoooo: humm ça se comprend

Default avatar.png 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 ;)

Default avatar.png sosoooo: trop bienn

BlaiseEbuth: T'étais là un an avant moi ! Quel vieux.

Default avatar.png sosoooo: mdrrr c'est fou de créer un groupe de potes sur un chat en ligne comme ça

Default avatar.png 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.

Default avatar.png sosoooo: ouahh incroyable

Default avatar.png sosoooo: vs avez ql age ?

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:

Default avatar.png sosoooo: mdrr vous répondez à aucune question :laughing:

dwarfie: on a tous 20 ou 21 ... ce qui compte , c'est la base ;)

Default avatar.png sosoooo: la base ?

dwarfie: base 10 , base 16 , base 36 , ....

Default avatar.png sosoooo: ahh ptdrrr

BlaiseEbuth: J'ai passé 1/4 de ma vie sur CG ! :scream:

Default avatar.png 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:

Default avatar.png sosoooo: bennn vous faites de l'informatique votre métier ?

Default avatar.png 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

Default avatar.png sosoooo: mdrr bon

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

Default avatar.png 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

Default avatar.png 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

Default avatar.png sosoooo: à l'époque mdrr

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 ?

Default avatar.png 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 ...

Default avatar.png M_C: Tu perdrais trop de temps et de mémoire à sauvegarder tout

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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 ?

Default avatar.png M_C: La conserver non

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

Default avatar.png M_C: En fait ça peut valoir le coup si ton arbre n'est plus très grand

Default avatar.png M_C: Genre en fin de partie

Default avatar.png 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...

Default avatar.png 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)

Default avatar.png M_C: c'est ca

jdeveil: et la backpropagation aussi

Default avatar.png 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 ?

Default avatar.png 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

Default avatar.png 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 ?

Default avatar.png M_C: oui

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

Default avatar.png 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(...)

Default avatar.png 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

Default avatar.png M_C: Ah tu trouves Dwarfie ?

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 ...

Default avatar.png 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

Default avatar.png M_C: https://www.codingame.com/multiplayer/bot-programming/bandas

Default avatar.png 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 ?

Default avatar.png M_C: C'est vrai qu'en regardant Bandas, il peut être sympa pour commencer MCTS

Default avatar.png 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 ?

Default avatar.png M_C: Ca peut faire partie des stratégie pour affiner

Default avatar.png 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 ?

Default avatar.png 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

Default avatar.png M_C: dans ta fonction donner_fils par exemple

jdeveil: oui c'est ça les moves possibles... pour un état de jeu donné

Default avatar.png M_C: mais il faut que ca reste facile à déterminer

jdeveil: ouaip... c'est peut être ça le plus chiant

Default avatar.png M_C: sinon il vaut mieux laisser les simus faire. Si c'est clairement pas un bon coup, il ne sera pas exploré beaucoup

Default avatar.png 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

Default avatar.png M_C: Tu peux aussi coder en dure certains coups dans certaines situations (en court circuitant le MCTS)

Default avatar.png M_C: genre le premier coup au centre, il faut le hardcoder

Default avatar.png 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

Default avatar.png 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/

Default avatar.png 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

Default avatar.png 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 :/

Default avatar.png 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 ?

Default avatar.png 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

Default avatar.png 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: ?

Default avatar.png M_C: WhatTrickeryIsThis parle de UTTT pas de TTT 3x3

jdeveil: ah ok

WhatTrickeryIsThis: ah? putin c'est quoi ttt 3 xD

Default avatar.png 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 ?

Default avatar.png M_C: le morpion classique

WhatTrickeryIsThis: le ttt 3 un min max depth 5 => gg

Default avatar.png 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 ;)

Default avatar.png 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)

Default avatar.png 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...

Default avatar.png 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 ;)

Default avatar.png M_C: bah minimax tu dois pouvoir explorer tous les cas je pense

Default avatar.png M_C: quitte à élaguer un peu

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

Default avatar.png BabelO: lol c'est tard !

jdeveil: parait que t'as utilisé un SA sur le contest Amadeus ?

Default avatar.png poipoiAH: oui a 1h du matin les gens normaux dorment

jdeveil: ils savent pas ce qu'ils ratent ;)

Default avatar.png BabelO: c'est quoi un SA ?

jdeveil: ba justement, je voulais savoir :p

Default avatar.png 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 ?

Default avatar.png 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 ?

Default avatar.png poipoiAH: ah déja plein d'etude a ce sujet

jdeveil: des journées de 28h... c'est les patrons qui vont être contents...

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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#

Default avatar.png 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 ?

Default avatar.png poipoiAH: euh attends j'ai une idée

Default avatar.png poipoiAH: https://www.codingame.com/ide/puzzle/container-terminal

jdeveil: c'est un facile ?

Default avatar.png poipoiAH: yes

jdeveil: ah yes je l'avais commencé lui... mais jamais fini... Le test 3 me faisait chier

Default avatar.png 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

Default avatar.png 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

Default avatar.png poipoiAH: ouaip ça j'ai le meme principe

Default avatar.png poipoiAH: sauf que le probleme c que tu peux stacker

Default avatar.png poipoiAH: sur une lettre precedente

Default avatar.png poipoiAH: qui te libere la place pour la derniere lettre

Default avatar.png 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

Default avatar.png 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

Default avatar.png poipoiAH: car t valeur sont plus les meme

jdeveil: ?

Default avatar.png poipoiAH: j'ai jamais ete fort en explication hahah

Default avatar.png 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 ?

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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 ^^)

Default avatar.png 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 ?

Default avatar.png 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 ;)