Chat:Fr/2020-03-25
JBM: bon à part ça, vraiment, quand ça veut pas ça veut pas
JBM: j'aurais dû faire la trajectoire pas débile avant les torpilles pas débiles
b0n5a1: sur un malentendu je te pousse
JBM: streak de 23 sans défaite
b0n5a1: 4 fois de suite contre moi
JBM: forcément t'es hors submit
b0n5a1: non
b0n5a1: voilà
JBM: purée c'est pas cher payé
b0n5a1: t'es passé ?
JBM: avec les boulets que je me paye en stream
b0n5a1: erf ok, leaderboard décalé
JBM: https://snipboard.io/i71rVs.jpg et https://snipboard.io/Ix7tpL.jpg
JBM: Boulet: https://pastebin.com/1UT7UQP1 (ton adresse)
Haashi: Bonjour le chat
Haashi: Automaton2000, tortue
Automaton2000: (en même temps, il y a un outil pour faire du java
[CG]Nick: test :)
Haashi: pong
Bob: ah bonjour le chat
Bob: o/
Bob: ressuscité ?
Haashi: Automaton2000, Eclipse ou intellij ?
Automaton2000: j'ai pas eu le temps de faire le plus de points
Bob: Automaton2000, patapon
Automaton2000: non, mais c'est pas un bug dans mon moteur
Bob: mets une tortue dans ton moteur, Automaton2000
Automaton2000: ah non ça c'est bon
Bob: menteur Automaton2000, on veut une preuve
Bob: dis tortue
Automaton2000: ça doit dépendre du langage
Haashi: tortue, turtle, tu as le choix Automaton2000
Bob: non non non Automaton2000, tortue c'est tortue
Automaton2000: mais si tu n'as pas compris ?
Automaton2000: sinon tu peux utiliser mon csb starter
Bob: Automaton2000, il y a des tortues dans le csb starter ?
Automaton2000: mais c'est dans la moyenne
Azkellas: bijour
Professeur_Lama: Bonjour je suis un débutant et j'aimerais savoir comment on fait pour que dans un if il y ai deux critères... (pour power of thor episode 1)
Bob: salut
Bob: la syntaxe dépend un peu de ton langage mais en général ça sera de la forme if (critère1 and critère2)
Bob: ou if (critère1 && critère2), pour les syntaxes les plus courantes
Professeur_Lama: ben la je suis en python :disappointed:
Bob: du coup c'est if A and B
Bob: si tu veux vérifier à la fois A et B
Razeed: Hello, j'ai une erreur quand je lance un test : "Une erreur est survenue (#73) : "Only 1 executor running at the same time for a test session". Merci de contacter codersHS@codingame.com si l'erreur se reproduit"
Bob: ou if A or B, si tu veux vérifier soit A, soit B, soit les deux
Azkellas: Faut attendre un peu Razeed
Professeur_Lama: ok mais il faut définir A et B ?
Azkellas: T'as du trop spam le bouton play :D
Bob: ah ben oui ce sont tes deux critères
Bob: tu remplaces par ce que tu veux
Azkellas: Et il a une partie en train de calculer
Bob: genre if x == 1 and y == 2:
Razeed: ok merci @Azkellas
Magus: Salut tout le monde et Automaton2000
Automaton2000: salut a tous, et a automaton2000!
Magus: (je viens de voir que le chat est revenu)
Azkellas: coucou
Magus: Razeed: t'es pas le seul à avoir le souci. [CG]Thibaud a indiqué sur discord que ce serait réglé d'ici 1h
Professeur_Lama: mais en fait là c'est pour les directions et pour qu'il aille au sud est par exemple parce que y a l'éclair qu'il doit choper et ben j'ai mis if light_x (position de l'éclair) and ight_y > initial_tx (position de thor) and initial_ty :
SeebOmega: il te manque une condition
Professeur_Lama: c'est quoi une condition ???:sob:
Bob: ah
Bob: un critère
SeebOmega: if x > light_x and y > light_Y:
par exemple
Bob: if light_x tout seul, ça veut rien dire
Professeur_Lama: ben ça marche pour les lignes droites...
Bob: enfin c'est pire que ça : en python en vrai ça veut dire un truc, mais pas ce que tu penses
Bob: traduit en français, ça veut dire "si light_x"
Bob: mais du coup si light_x quoi ça ?
Azkellas: tu as fait if (x and y) > (light_x and light_y) au lieu de if x > light_x and y > light_y
Professeur_Lama: oui bah si light_x est supérieur à initial_tx alors aller à l'est (exemple)
Azkellas: donc python est perdu, tu peux pas faire des doubles comparaisons comme ca
Bob: dans ce cas c'est if light_x > initial_tx: print("E")
joelthelion: Les 50ms, c'est du wall time ou du cpu time?
Professeur_Lama: ui c'est ce que j'ai mis pour les lignes droites mais pour aller en SE par exemple je fais comment ?
Bob: eh bien si tu devais le réfléchir à voix haute, tu diras comment ?
Bob: dirais*
Professeur_Lama: LOL je dois vous em.. bêter:joy:
Bob: non, du tout
Bob: et c'est vraiment de cette manière-là que tu dois procéder
Bob: 1. savoir comment tu résoudrais le problème "à la main"
Bob: et l'exprimer clairement dans ta langue à toi
Bob: 2. traduire ça en python
Professeur_Lama: Ben si la position x et la position y de l'éclair sont supérieures à la position x et la position y de thor, faut qu'il aille au sud-est
Bob: bien
Professeur_Lama: ben c'est pas ça que j'ai mis en python ?
Bob: alors là, juste un truc, comme disait Azkellas, il vaut mieux le penser comme a. la position de x de l'éclair est supérieure à la position x de thor et b. la position y de l'éclair est supérieure à la position y de thor
Professeur_Lama: ok je vais essayer merci à vous deux
Vry: +1 Bob et Yo et Yo aux autres aussi .. chat is back! :p
Bob: parce que a. et b. seront chacun une condition
Bob: et c'est plus simple à exprimer en python
Vry: joelthelion : bonne question ...
Bob: o/ Vry
Vry: Ce soir je commence le contest ... planquer vos bots !
Professeur_Lama: oui c'est pour ça que j'ai choisi le python pour commencer
Bob: et après, il est important de bien voir, quand tu as un souci, si ça relève de 1 (comprendre et résoudre le problème) ou 2 (traduire ta méthode en python)
Bob: 1. c'est du raisonnement, 2. c'est de la technique
Professeur_Lama: ben là je pense que c'était plus le 2 non ?
Bob: a priori oui
Bob: mais des fois une mauvaise approche en 1 fait qu'on peut s'empêtrer dans des trucs plus compliqués que nécessaire en 2
dbdr: Vry, ok, on les cassera
Bob: franchement Vry, tu crains pas grand-chose du mien
Professeur_Lama: Euh... BOB problème 1 !
Professeur_Lama: En gros j'ai mis pour aller en diagonale et ça marche (bonne nouvelle)
Professeur_Lama: il y a déjà le code pour aller en ligne droite, et du coup quand il doit aller en diagonale il sait pas quelle commande exécuter...
b0n5a1: dis toi qu'aller en diagonale quelquepart c'est aller en ligne droite dans 2 sens...
Azkellas: oula
b0n5a1: (ça va tout simplifier)
YannT: c'est aussi une leçon de vie d'ailleurs
Bob: comme il dit b0n5a1
Professeur_Lama: je sais mais du coup si je mes que les lignes droites et ben il va trop lentement (ça c'est pas une leçon de vie ça...)
Bob: alors
b0n5a1: (en même temps)
Bob: option 1, à la b0n5a1 : tu gères x et y indépendamment
YannT: souviens toi aussi que l'important n'est pas la destination, mais le voyage et les rencontres faites sur le chemin
Bob: option 2 : tu gères vraiment chacun des cas séparément
Haashi: j'adore l'eau, dans 20-30 ans y'en aura plus
Bob: option 1, tu vas avoir un jeu de if/elif/else pour traiter les cas "j'ai besoin d'aller à l'est/à l'ouest/pas changer x"
Bob: et un pour y avec nord et sud
Bob: et tu assembles les deux pour avoir une seule direction
Bob: option 2 tu vas avoir un gros jeu de if/elif/else avec 8 cas différents qui traitent "jai besoin d'aller à l'est", "j'ai besoin d'aller à l'est et au nord", "j'ai besoin d'aller à l'est et au sud", etc
Professeur_Lama: ah ouais mais si tu commences à mettre des mots de plus de trois syllabes ça va être compliqué pour moi là (non je rigole)
Bob: là on est dans le 1 de tout à l'heure : comprendre et résoudre le problème
Bob: il y a plusieurs manières différentes de le voir
Professeur_Lama: j'ai fait tout séparément et comme je l'ai dis pour aller exemple au NW (diagonale) et ben il sait pas si il doit faire des lignes droites dans les deux sens ou la diagonale
Bob: là tu es sur l'option 2 à vue de nez
b0n5a1: imagine que t'as deux manches : un pour aller au nord ou au sud, l'autre pour aller à l'est ou à l'ouest...et pilote
Professeur_Lama: :neutral_face:
Bob: l'option 2 c'est la plus "basique"
YannT: et de toutes façon l'est, l'ouest, selon comment on est tourné déjà ça change tout
Bob: tu dis que tu peux te déplacer de 8 manières différentes (N, NW, W, SW, S, SE, E, NE)
b0n5a1: en utilisant les deux manche en même temps mais en pensnat d'abord à l'un puis à l'autre
TheUndisclosedSkull_a218: Bonjour, j'ai une erreur comme quoi 1 exécuteur ne peut fonctionner en même temps sur une session. Sauriez vous m'aider ?
Bob: donc là il faut que tu trouves les conditions précises pour choisir chacune des 8 conditions
Bob: et tu fais un seul gros paquet de if/elif/elif/elif/elif/elif/elif/else avec chacun des 8 cas
Professeur_Lama: bêêêh oui je vois ce que tu veux dire mais euh là c'est ce que j'ai fait bob
Professeur_Lama: c'est quoi déja les elif ?:tired_face:
b0n5a1: tu penses à mettre à jour les coordonnées de Thor à chaque tour aussi ?
Bob: if -> si elif -> sinon si else -> sinon
Bob: par exemple
Professeur_Lama: ben je sais pas comment définir la position actuelle parce que je sais pas quel est le code original
Bob: if x == light_x and y < light_y: http://chat.codingame.com/pastebin/6a9e35f7-6828-4cd6-81bd-c0b6aea42554
Bob: la mise à jour de la position, ça sera dans un deuxième temps
Bob: un problème à la fois
Bob: (une autre règle d'or)
Bob: surtout, surtout, ne changer qu'un seul truc à la fois
Bob: sinon ça devient très vite indémerdable
YannT: je comprend pas comment font les gens pour monter en haut direct au premier submit
YannT: ils travaillent une semaine en local et dans l'IDE avant de submit Oo
dbdr: ça dépend, ils s'appellent comment?
YannT: Kodle là
YannT: il a bombardé direct, pas vu avant
YannT: pb4 pareil hier
dbdr: Kodle il était 21 cette nuit
YannT: ah ok, normal alors il a du mettrte les mines :p
dbdr: oula ça rame les serveurs on dirait
dbdr: kodle submit il y a 40 minutes, il est à 68%
BigUP: Ho punaise !! Top 80 !! ;) c'est bon on peut ouvrir la silver !!! ;)
Bob: moi c'est encore un contest où j'ai pas la moindre idée de comment "bien" jouer
Azkellas: Ca promet pour l'ouverture du silver ouais
dbdr: Bob:: tout au feu de bois
BigUP: Bob, pour l'instant mon IA est loin d'etre extraordinaire... que des trucs de base
Bob: bah pareil mais mes trucs de base à moi ils fonnt 150 tu vois :)
BigUP: je pourrais bien t'indiquer 2/3 astuces, mais le contest est encore long ! ;)
YannT: vu que je suis pas mal placé je crois que le plan pour aujourd'hui ça va être refacto de code, parce que j'ai déjà fichu un de ces bourdel dans le code moi là...
YannT: c'est nawak et je vais avoir du mal à continuer si je met pas un coup d'aspi là :p
Bob: enfin bon j'ai plusieurs trucs qu'il faut que je commence par arranger
Bob: j'ai un move tout pourri qui fait que je m'enferme dans des petites zones et après je dois surface
BigUP: Bob, aller tant pis, je balance ... Floodfill pour moi
Bob: ça va :)
Samsa: BigUp le floodfill marche très bien
Bob: et dans le même genre je ne vérifie pas la vraie distance pour les torpilles donc des fois je tente de tirer au travers d'une île
YannT: pour monter dans bvronze le quickwin c'est de gérer les silences (tiens et adverse)
Bob: donc ça ne tire pas mais je perds mon cooldown et je me signale quand même
YannT: si t'as déjà un MOVE et un TORPEDO de base, c'est le next truc qui te fait grimper bien
BigUP: Silence adverse c'est chaud a gérer
Samsa: Très
Samsa: J'ai un truc mais pas très bon
Bob: bah j'ai du code pour mettre à jour ma map de "où qu'il est" en cas de silence
Professeur_Lama: oh purée je me débrouille mais c'est le troisième niveau et en plus il faut pas sortir d'un chemin........................................
Bob: mais ça rajoute des seaux de positions
Professeur_Lama: Mais bon je vous laisse
BigUP: oui move et torpedo correct c'est ce qui fait faire Top 150 environ
YannT: critique pourtant sinon tu te retrouves à devoir complétement reset ses positions possibles, ce qui est infinement pire
YannT: reset = partie perdue en gros
Samsa: Bob les cartes ne se souviennent pas du chemin d'avant qui permet de diminuer le nombres de pos après le silence
Bob: oui, c'est un truc que je dois gérer ça
YannT: surtout les bots qui silence tous les ~6-7 tours, autant dire que si tu gères pas tu les retrouve jamais (sauf torpille dans la tronche)
YannT: (mais torpille dans la tronche c'est pas une bonne façon de détecter)
BigUP: Bob, les sauts de 4 cases, c'est rarement utile.. tu peux déjà limiter, tu devrais arriver pas tres loin de mon IA
Bob: intuitivement je n'arrive pas à dire si c'est utile d'avoir à la fois une map et un suivi de la séquence complète de move, ou si la séquence de move suffit
YannT: imo la gestion du silence ce sera la condition pour sortir de bronze vendredi
BigUP: moi j'ai plus ou moins les 2
Bob: enfin bon je ne manque pas d'idées de base
Bob: faut juste que je me trouve du temps pour m'y coller
Bob: parce que du coup là forcément je passe plus de temps avec ma femme et mes gamines :D
Samsa: Bob moi j'ai une carte du chemin suivi pour chaque position possible
YannT: met toi en télé "travail"
YannT: "papa doit travailler"
BigUP: carte des position spossibles que je met tres peui a jour et tous les moves adverse pour reconstituer la position possible
Bob: oui j'ai en tête de faire un truc de ce genre-là
BigUP: mais va probablement falloir que je pass ea autre chose
Bob: ça m'aidera aussi à envisager ses moves suivant
BigUP: c'est pas gérable avec les silences
Bob: là je pars du principe qu'il peut aller dans n'importe quelle direction
Bob: ce qui est crétin
Bob: il faudrait que je gère ses cooldowns aussi, au moins celui du silence
BigUP: il peut quasi aller dans n'importe quelle position mem esi en dessous de Top100 il vont probablement toujours dans la meme direction ;)
dbdr: egaetan faut lire les messages avat d'écrire sur discord ;)
YannT: Bob: pas facile de gérer les cooldowns adverses, c'est casse gueule de déviner ses priorité entre les différents systèmes
YannT: torpedo > silence > sonar||mine
YannT: semble être la norme
Mr.RoboT: qqn a fini mars lander 3 ici?
YannT: mais c'est difficile de parier dessus :)
dbdr: YannT ça va completement dépendre de l'adversaire non?
YannT: c'est ce que je dis
YannT: même si 99% font la prio du dessus
dbdr: ah pardon, j'avais lu bonne, pas norme
YannT: tout comme 99% font des SILENCE 0 ou SILENCE 1 d'ailleurs
YannT: mais bon si tu codes ça et qu'uin bot fait un truc original t'es fichu quoi
dbdr: qqn a fait les stats, c'est pas aussi prononcé
Bob: Mr.RoboT oui ?
dbdr: mais oui 0 et 1 sont les plus courants
YannT: tu peux coder que le silence a un range de 1 du coup et avoir globalement raison
YannT: mais si un bot fait du silence 3 ou 4, tu l'as perdu et t'as perdu la partie
dbdr: si c'est rare et que tu gagnes bcp...
Bob: ooohhh l'API complètement WIP sur laquelle on s'appuie et qui change ce qu'elle renvoie
Bob: quatre heures avant la démo
Bob: :clap:
Bob: putain je suis content de ne pas bosset cet aprèm
Bob: bosser*
YannT: dbdr: ça se teste en tout cas je pense mais j'ai pas la foi perso :p
Bob: vérifier le résultat de la torpille aussi, je ne fais pas
Bob: enfin pour ça faudrait déjà que j'arrête de les tirer n'importe comment
Mr.RoboT: @bob j’essaie de modeliser les trajectoires en ce moment a partir d’algo type celui d’Euler. Cependant la masse n’est pas dans les données et je ne vois pas comment en faire abstraction...
Mr.RoboT: c'etait pas @ apparament
Bob: ah oui mais tu veux faire ça classe, aussi
Mr.RoboT: bref je me noie
Mr.RoboT: oui pour un tipe
Bob: désolé moi j'ai fait sale :p
Mr.RoboT: mais dans tous les cas pour faire un ag il me faut une simulation
Mr.RoboT: tu l'as fait comment?
Bob: j'ai pris mon code de ML2 avec ses 3-4 cas de base à coups de if
Mr.RoboT: ouais ok je vois
Mr.RoboT: et ton code Ml2 quels types d'algo?
Bob: j'ai rajouté une heuristique bourrin pour détecter la caverne et un hack dégueu pour passer au -dessus
Mr.RoboT: ok :joy:
Bob: et ensuite je tape sur mes magic numbers jusqu'à ce que ça passe les deux tests
Mr.RoboT: ca se tient
Mr.RoboT: j'essaie de faire un ag mais la simulation me fait suer du sang
Bob: ben ML2, je te dis j'ai 3-4 paquests de if pour "j'ai besoin d'accélerer/freiner/rester tel quel/descendre"
YannT: Mr.RoboT: l'idée générale de faire un AG (pas une simu) c'est à chaque "tour" de simuler la situation après des inputs (plein de fois)
YannT: donc tu modélise pas la trajectoire complète
Bob: donc mon ML3 c'est pareil avec une paire de rustines en plus pour gérer la caverne
YannT: tu code juste ce qui se passe au tour suivant selon tes inputs, et tu évalues si c'est mieux ou moins bien qu'autre chose
Bob: essentiellement : savoir où elle est et passer par-dessus si nécessaire
YannT: (pas = soit)
Bob: une fois que ça c'est fait, ça redevient ML2
Mr.RoboT: ok ok
Mr.RoboT: donc pas de simu pour l'ag
YannT: si si
YannT: une simu
YannT: mais d'un tour de jeu
Bob: de la même manière que ML2 c'était gérer le nécessaire pour se ramener à ML1
Mr.RoboT: ok mais tu definit ta fonction d'evaluation comment
Mr.RoboT: ok je vois
YannT: ah c'est ça qui est sport
Mr.RoboT: je vais chercher comme ca alors
Mr.RoboT: merci
pb4: YannT : non non, pas de travail en sous marin, j'avais juste rien avant
YannT: une idée rigolote peut être d'avancer le jeu "sans aucun input" et de voir si tu crash ou pas déjà
YannT: faut probablement aussi factorer le fuel restant
YannT: tu donnes un score à la situation
YannT: et après tu tripatouille l'eval jusqu'à ce que ça passe
Mr.RoboT: je vais tenter ca alors
Bob: le seul AG que j'ai fait c'est sur CvZ, à titr d'exo
YannT: en gros la simu (sans parler d'AG) de base c'est 1) tu établi la liste des de toutes les combinaisons d'actions possibles sur un tour de jeu et 2) tu scores le résultat après un tour de jeu
YannT: première étape
BigUP: Bob, sur ML2 l'AG c'est aussi a titre d'exo car il y a surement plus efficace
YannT: seconde étape: faire ça à plusieurs tours d'avance si besoin
BigUP: l'AG est chaud a mettre en place sur ML2, difficile de trouver ce qui fait que ca va marcher dans tous les cas
Mr.RoboT: hmm
Bob: bigup oui mais là il faut coder la simu et ça me fait chier :rofl:
YannT: et ensuite l'aspect AG, c'est juste pour au lieu de bruteforcer toutes les combinaisons d'actions possibles à chaque tour, de selectionner les combinaisons les plus susceptible de donner un truc bien
YannT: mais limite part en bruteforce, l'AG tu vois après
BigUP: Bob, oui mais la simu n'est pas trop complexe
Bob: je n'en doute pas
BigUP: juste faire gaffe a la précision du float
Bob: mais j'ai la flemme quand même :D
Mr.RoboT: BigUP: les collisions aussi
Mr.RoboT: pas evident a coder
BigUP: les colisions bah tu vois si tu est au niveau du sol ou pas
Mr.RoboT: mais la tu parle d'une simu qui genre toute la traj?
Mr.RoboT: genere*
Bob: ben jjuste un tour
Mr.RoboT: ok
Bob: si ton tour crashe, tu vas pas plu loin
BigUP: moi j'ai du gérer une phase d'approche et une phase d'atterrissage, mais ca à été chiant de trouver les parametres qui passent tous les niveaux
Bob: éval à zéro et c'est marre
BigUP: à un moment, sur le dernier niveau, la fusée se retrouvait en statique au milieu de l'ecran !! ;) Elle avait trouvé un point d'équilibre ! ;)
Mr.RoboT: l'enfer ca
BigUP: au final, mon IA ne marche pas toujours
Mr.RoboT: mais un mec a reussit a pondre un AG assez robuste
Mr.RoboT: y a un article dessus
Mr.RoboT: apres il reste assez evasif sur la partie simulation par exemple
BigUP: oui, dans l'ideal il faut faire comme lui a fait, il a réussi a elargir le cone de recherche de chemin de son AG
Mr.RoboT: c'est ce que je voudrais faire
BigUP: Ce qu'il me manque c'est une visualistion de mes simus... la j'ai bricolé en aveugle
Mr.RoboT: mais je comprend pas comment il a pu sortir carrement de cg
Mr.RoboT: creer une interface
Mr.RoboT: sans la masse
Mr.RoboT: ca me semble essentiel dans une simulation physique comme celle ci
BigUP: refaire les tableaux c'est pas tres compliqué
Bob: bah tu fais ta simu
MadKnight: Automaton2000, es-tu un Mr.RoboT ?
Automaton2000: donc tu peux pas en dire plus
Bob: tu prends 1 pour la masse
Bob: pour un input donné tu vérifies si ta simu matche ce que CG te donne
Bob: et tu recales
Mr.RoboT: mais 1 pour la masse c'est une brindille
Mr.RoboT: oui ok
Bob: a priori avec juste ML1 tu dois pouvoir trouver la masse comme ça
Mr.RoboT: j'avais pensé a faire ca en effet
Mr.RoboT: c'est vrai
BigUP: ? je ne pige pas le besoin de la masse... c'est pas une simulation parfaite dans le monde réel.. la tu prends just eles g à chaque tours
Mr.RoboT: ben c'est juste que le seul moyen que je connais pour calculer une traj c'est un bon vieux PFD
Mr.RoboT: tu la ferais comment?
BigUP: Mr.RoboT, tu veux faire ML2 avec une equation ?
Mr.RoboT: pour le moment je veux juste obtenir les trajectoires en fonction de mes input
MadKnight: Mr.RoboT tu simules quoi ?
Mr.RoboT: et la seule maniere de faire que je connais c'est de chopper l'equation de la trajectoire quitte a le faire plusieurs fois en changeant les conditions initiales
Mr.RoboT: MAdKnight: le niveau mars lander
MadKnight: 3 ?
Mr.RoboT: 1, 2 ou 3 c'est la meme physique
MadKnight: oh
Mr.RoboT: juste que une liste de (power,rotate) renvoie une traj
Mr.RoboT: je parle pas des algos de resolution juste du cadre du niveau
MadKnight: et c'est quoi ta probleme ?
Mr.RoboT: mais mon but c'est de resoudre le 3 a la fin oui
Mr.RoboT: j'arrive pas a generer les traj
Mr.RoboT: dans mon modele
Mr.RoboT: sans connaitre la masse en tout cas
YannT: c'est normal, tu peux pas résoudre l'exercice avec juste une formule
YannT: tu dois simuler des séquences de tour de jeu
YannT: et évaluer celles qui sont les meilleures
Mr.RoboT: mais je veux juste une representation graphique pas resoudre le probleme encore
BigUP: Mr.RoboT, tu fais des points et des droits pour chaques etapes
BigUP: droites
Azkellas: tu as les relations (pos, pow, angle) - resulting pos sur le forum
Haashi: Mr.RoboT, si tu poses justement ton PFD, tu verras que t'as pas besoin de la masse
YannT: hann dbr il a mit les mines ;)
Azkellas: wow j'avais pas entendu parler de PFD depuis si longtemps
YannT: dbdr*
pb4: PFD c'est quoi ?
dbdr: euh non
pb4: J'en entends parler tous les jours, mais ça ne me paraît pas coller avec le contexte codingame :D
dbdr: principe fondamental de la dynamique
Haashi: contexte codingame pas trop, mais context mars lander oui
dbdr: YannT tu te sers du cooldown adverse comment?
Haashi: aussi connu sous 2eme loi de newton
dbdr: https://www.codingame.com/share-replay/442196771 4-2 => 0-0 en un tour :D
BigUP: hum, 12h17... c'est l'heure de se déconfiner un peu
Neumann: Tu peux utiliser ta charge sur le même tour ?
Mr.RoboT: principe fondamental de la dynamique
Mr.RoboT: donc en effet aucun rapport avec cg
Mr.RoboT: en gros c'est la deuxieme loi de newton
Mr.RoboT: Hasshi tu dis que la masse s'annule dans le PFD?
Mr.RoboT: je suis juste nul alors
WhatTrickeryIsThis: oui Neumam
WhatTrickeryIsThis: dîtes comme on sait si on est bien inscrit sur batleDev ?
domak: y'en a qui ont fait des tests sur la meilleure option: 1. tirer sur une liste de positions possibles 2. attendre d'être sur pout tirer La première à l'avantage de restreindre les positons possibles mais de se faire repérer, la deuxième te hide plus longtemps mais je suis pas sûr que cela offre un avantage
WhatTrickeryIsThis: C'est parfait, on te garde une place le soir de la BattleDev. 💪
" On t'envoie un email avec quelques infos pour valider tout ça. "
WhatTrickeryIsThis: j'ai pas reçu c'est normal ?
Neumann: Quelqu'un d'autre que WTIT peut valider ? J'ai aucune confiance en ce type
WhatTrickeryIsThis: moi je le fais systématiquement avec les torpendos
WhatTrickeryIsThis: regarde mes replay torpendo 7 7
WhatTrickeryIsThis: j'ai deux bille, et pendant le tour suivant je fait charge et je fire
WhatTrickeryIsThis: au même
Neumann: Ah ouais
Neumann: Claqué
pb4: Oui
pb4: La seule chose que tu ne peux pas faire sur un seul tour c'est mine x y | trigger x y
YannT: dbdr: je m'en sers pas :p
YannT: Neumann: je valide aussi
domak: avec les mines, ça commence à ressembler à unleash...
Zorg1: pas trop, les mines il faut les déclencher et y a pas de réaction en chaîne
Haashi: Mr.Robot, c'est un objet en chute libre, a = gmars
Vry: :coffee:
BigUP: 1 gmars et ca repart !
domak: Zorg1, s'pas faux mais je pensais plus en terme de détection
JBM: comment es ton discretion
domak: discrétion? tu parles de l'utilisation des silences?
WhatTrickeryIsThis: lol je suis pas dernier
WhatTrickeryIsThis: t'es trop nul Apo
Stilgart: JBM: aussi propre qu'après un torpedo tous les trois tours
Dridriun: T'as vu Stilgart je t'ai fait monter légende sur Crystal Rush à force de submit et que tu dégommes mon IA :grinning:
Stilgart: ha, c'est ça le mail de promotion que je viens de recevoir et qui me fait me demander où est la ligue silver à OoC :D
Stilgart: en tout cas, merci
Stilgart: au moins, j'ai pas attendu longtemps (en même temps, être passé à 0.1 du
Dridriun: du coup j'ai réussi à passer légende aussi comme tu n'étais plus dans le top 10 gold
Stilgart: boss en contest ça m'avait mis un peu les boules)
Stilgart: héhé
Dridriun: oui pareil 2 h avant que le contest se finisse j'étais 2 ème de la ligue or
Stilgart: moi c'était dans la nuit de dimanche... je pensais passer au réveil, mais je sais plus qui m'avait tellement marcher dessus que c'était mort
Dridriun: oui en plus à la toute fin du contest comme tout le monde submit les résultats sont faussés, mon dernier submit m'avait fait perdre 30 places
Dridriun: oui en plus à la toute fin du contest comme tout le monde submit les résultats sont faussés, mon dernier submit m'avait fait perdre 30 places
Dridriun: oups désolé pour le double message, fail
egaetan: re
egaetan: le chat est revenu !
nicola: https://www.youtube.com/watch?v=YphbBFJ0sp0
nicola: Steve Waring… :cry:
BlaiseEbuth: :cry:
jolindien: o/
RomanceDawn: plop
jolindien: :rowboat:
mouchroot: merci nicola pour l'ambiance sonore
BlaiseEbuth: Guten Morgen moussaillons ! Automaton2000, AutomatonNN, sur le pont ! Schnell !
Automaton2000: ah il me semblait qu'il y avait un truc qui tourne
AutomatonNN: c'est pas un problème de contest de contest de contest de contest pour le contest que tu as pas trop
Zorg1: t'es gonflé à bloc AutomatonNN
AutomatonNN: ceux qui savent pas c'est quoi le problème de ce que tu n'as pas eu de problème ?
Zorg1: blaisebuth se la joue Das Boot
BlaiseEbuth: Ja...
Zorg1: Ach ! Krieg grosse Malheur !
Zorg1: bon j'ai des trucs à fix moi ...
Haashi: le contest aura du s'appeler Ocean-of-todo tellement de piste sur lequel s'améliorer
Magus: Stilgart ou un autre matheux dans le coin ? :o
Magus: (ouai j'ai une question de math)
JBM: oui, 2+2 ca fait bien 4 sur CG
Stilgart: :fearful:
Stilgart: Automaton2000: cache moi
Automaton2000: oui ... mais en fait c'est le seul que je connais le referee par coeur
Magus: on me demande de coder une simple variance, jusque la je sais pas faire
Stilgart: tu as quoi en entrée ?
Magus: mais à la fin de la formule qu'on me donne, j'ai un sqrt(n/(n-1))
Magus: c'est quoi ce truc ?
Magus: (j'ai pleins de floats en entrée)
Magus: (un tableau de floats, tout simplement)
Stilgart: la variance (par définition), c'est
Stilgart: moyenne des carrées - carré de la moyenne
Haashi: le moment d'ordre 2
Magus: mais la formule qu'on me demande de faire c'est sqrt(squaresum/n - average²) * sqrt(n/(n-1))
Stilgart: je peux imaginer le n/(n-1)
Magus: mais je vois pas c'est quoi ce sqrt(n/(n-1)) qui traine à la fin
Stilgart: par contre, le sqrt est louche
Stilgart: alors, le soucis de la définition, c'est que ça suppose que tu peux calculer la vraie moyenne
Magus: attends je te copie colle ce que j'ai dans ma "spec"
Stilgart: ce qui, pour des tas de raisons, ne marche pas
Magus: sigma = sqrt(|squareSum / n - average²|) * sqrt(n/n-1)
Magus: voila, ça c'est ma spec
Zorg1: c'est un écart type ?
Magus: non c'est une variance
Stilgart: du coup, tu as une moyenne biaisée, et le n/(n-1) est là pour corriger le biais
Magus: (mais la variance c'est la racine carré de l'écart type de toutes façons)
Stilgart: le sqrt fait quant à lui penser à un écart type
Magus: pourquoi j'ai une moyenne biaisé ? je comprend pas
Stilgart: donc +1 pour Zorg1
Zorg1: l'inverse plutôt non ?
Magus: euh oui l'inverse
Magus: mais pourquoi j'aurais une moyenne biaisé ?
Magus: je fais une moyenne de mes floats toute simple :o
Stilgart: Magus: parce que tes floats sont un échantillon de toutes les valeurs possibles
Stilgart: donc ta moyenne sur ces floats là c'est pas pile poil la moyenne du modèle qui est derrière
Magus: ah ok c'est corriger les approximations à cause des floats
Stilgart: non
Magus: ah ?
Stilgart: à cause de l'échantillonage
Stilgart: imagine que je regarde que 5 copies au lieu de 130
Magus: je suis pas trop sur de voir en quoi les falots sont un échantilllonage
Magus: *floats
Stilgart: j'aurais sans doute pas la même moyenne :)
Stilgart: disons que, comme on te demande une variance, j'imagine que tes floats sont des mesures (et pas une représentation exacte de la réalité)
Stilgart: vois ça comme un MC si tu veux
jolindien: n c'est le nombre d'échantillons ?
Magus: oui c'est des points de mesures
Stilgart: on tire au pif 1000 fois et on regarde ce que ça donne
Magus: c'est pas la réalité dans le sens où on peut pas mesurer à chaque atome :D
Stilgart: voilà
Magus: donc on a une mesure tous les mm (en général, mais on peut faire plus petit)
Stilgart: du coup, tu as un biais sur la moyenne (liée aux limitations de mesure)
Magus: ok c'est pour corriger ça
Stilgart: et ça se corrige avec du n/(n-1) (je sais jamais s'il faut diviser ou multiplier par ça, par contre)
JBM: de memoire, il faut faire comme si une des moyennes se faisait sur n-1 echantillons au lien de n
Stilgart: le calcul qui même à ce terme est assez tordu (bien que comprensible)
Zorg1: (je crois qu'on considère que l'échantillon a un élément en moins j'ai jamasi compris ce truc)
Magus: le "bout" de spec que j'ai simple dire qu'il faut multiplier
Zorg1: voilà
jolindien: voilà voilà
jolindien: tout ça règle pas mes problèmes de timeout
Stilgart: ni le pourquoi Magus a un sqrt
Zorg1: (bah 'sigma' en général c'est un écart type ;-) )
Stilgart: il a dit sigma ?
Stilgart: c'ext l'explication la plus logique
Stilgart: après, dans certains contexte, le biais peut être différent du résultat classique
Stilgart: (mais c'est quand même rarement le cas)
Magus: j'ai aucune idée de pourquoi j'ai un sqrt, je savais même pas pourquoi j'avais ce coef
Magus: mais merci pour l'explication
Stilgart: ha oui, il a un sqrt partout
Stilgart: donc c'est bien un ecart type
Stilgart: l'écart type c'est souvent plus exploitable que la variance
Stilgart: ça mesure vraiment l'écart à la moyenne
Haashi: d'ailleurs pourquoi sqrt(x)*sqrt(x), et pas juste sqrt(x*x)?
Stilgart: du coup, ta formule pour sigma est logique
Haashi: y a pas + de risque pour les erreurs float ?
Stilgart: c'est marginal par rapport au biais de mesure
Stilgart: (j'imagine que Magus n'a pas 2^50 points)
Magus: nan, en général on a entre 1000 et 5000 points
Magus: je crois qu'on a un client qui monte à 10000 points qui nous a forcé à avoir un modèle de serveur plus gros que d'habitude
b0n5a1: y'a des jours tu sais pas si tu rêves ou si les gens sont complètements tarés
RomanceDawn: jolindien mcts ? :sunglasses:
RomanceDawn: ce serait abusé
b0n5a1: je vein de rentrer à moitié déboussoler d'avoir fait euthanasier mon chien en fin de vie...je tombe sur une fille en pleine rue qui me propose "une prestation à 40 e"....
RomanceDawn: :no_mouth:
Stilgart: ça fait cher le free hug
b0n5a1: elle fait genre elle traverse la rue et au dernier moment elle fait signe quand tu passes en bagnole
Stilgart: après, elle pouvait pas savoir que c'était vraiment pas le moment
jolindien: pas encore RomanceDawn, pas encore
b0n5a1: elle a surtout rien à foutre dehors
jolindien: :rowboat_tone1:
Stilgart: techniquement, je suis d'accord à JBM
b0n5a1: ici c'est pas le moment de faire mumuse avec ça Stillgart, on est dans une merde noire
Stilgart: peut-être qu'elle a vraiment besoin de ça pour manger
b0n5a1: oui mais bon
Aveuh: Plop ici
BlaiseEbuth: \o
Stilgart: o/
b0n5a1: o/
Vry: \o/
Vry: J'enfile ma bouée :doughnut: et j'arrive ... :p
Aveuh: T'as une bouée donut ? Classe !
Aveuh: Vas y JBM qui est venu se coller juste devant moi au classement pour me narguer
Aveuh: C'est quoi ça ?
JBM: avec du code que j'ai pas retouche depuis hier
JBM: j'ai colle quelques roustes a beber aussi hier
b0n5a1: j'ai découvert ce matin que tu me narguais en plein stream ^^
JBM: bah il parait que j'ai pris cher avec Aveuh la derniere fois
JBM: donc quand tu streameras tu pourras te venger sur lui
b0n5a1: je pensais que t'avais fini de streamer deouis un moment
Aveuh: Mdr, la dernière fois c'était il y a 6 mois :D
JBM: slafota a cg qui fait plus de contests
Vry: Mais d'abord le tour du pâté de maisons ... histoire de se dégourdir un peu les jambes ...
WhatTrickeryIsThis: et depuis quand le paté ça dégourdi les jambes?
b0n5a1: s'il est périmé tu coures vite aux WC WhatTrickeryIsThis
WhatTrickeryIsThis: c'est mon algo qui est périmé :(
Stilgart: on dit AutomatonNN
AutomatonNN: oui mais c'est pas trop compliqué de comprendre comment on te dis que tu as pas besoin de te dire qu
egaetan: Salut WhatTrickeryIsThis t'es positif ?
WhatTrickeryIsThis: je suis bon là
WhatTrickeryIsThis: 3em par le bas
WhatTrickeryIsThis: je ù'y remet demain ou après demain
WhatTrickeryIsThis: je comprends pas la batleDev, les inscriptions c'est confus
egaetan: hahaha
egaetan: c'est l'exo 0 réussir à s'inscrire
YannT: ah ouais c'est demain ça
YannT: je suis inscrit mais faut pas que j'oublie de le faire
YannT: cela dit coder en speed c'est pas mon truc :|
egaetan: c'est pas en speed le problème
egaetan: :p
YannT: c'est en 2h non?
YannT: ça doit bien être un truc de rapidité j'imagine
Aveuh: Souvent c'est surtout d'avoir une base d'algos toute prête sous la main
Aveuh: Reconnaitre le bon problème et utiliser le bon algo :P
Vry: WhatTrickeryIsThis quand tu te perds dans le pâté en question ça dégourdit les jambes ... :sweat_smile: j'en suis tout trempé
Aveuh: Question sur le contest en cours: avec un silence on peut passer "au dessus" de cases déjà visitées ?
YannT: non
WhatTrickeryIsThis: Aveuh xD, long time no see
YannT: voit ça comme [0;4] MOVE successifs dans une meme direction
Aveuh: Salut WhatTrickeryIsThis ^^
Aveuh: ok merci YannT :)
Aveuh: Va falloir que je me tape une déter pour lire le referee
Aveuh: Mais j'ai tellement la flemme
Swagboy: Oh pas la peine d'aller voir le referee pour ça!
dbdr: pourquoi s'embeter avec le referee
dbdr: quand on a le chat
irmo322: P***** depuis tout à l'heure j'optimise mon code car je crois qu'il est trop long à s'executer. Je réalise maintenant que j'affichais depuis le début des millisecondes et pas des secondes....
irmo322: :facepalm:
Vry: Oui, d'ailleurs j'espère que le chat est prêt je vais faire mon Boulet ... :)
YannT: tiens, j'ai un bug
YannT: oh punaise
YannT: le cas borderline idiot
YannT: adversaire qui se prend une torpille ET surface dans le même tour, ça me nique ma détection ahah
YannT: whoopsie
Swagboy: Ahaha oui je l'ai aussi
Swagboy: Mais c'est assez galère à corriger
Swagboy: Enfin moi exactement c'est je balance torpille -> je check sa vie pour voir si je l'ai touché -> mais si il a fait surface je confond ça avec ma torpille
YannT: ben ouais
YannT: oups quoi
YannT: s'il se tire dessus ça fait la même aussi
Swagboy: oui
YannT: ahah mais c'est qu'il le fait exprès dbdr c'est une stratégie :D
Swagboy: Et ce qui est génant c'est qu'à priori tu voudrais faire cette vérification avec de lire ses mouvements
Swagboy: Mais après ses surfaces...
Swagboy: *avant de
Swagboy: Aha c'est osé dbdr
YannT: la vieille feinte dbdr ahah
YannT: https://www.codingame.com/replay/442303693
YannT: mais bon en plus ça marche!
dbdr: frame?
YannT: 83
YannT: tu surface pour pas de raison
YannT: ça tombe sur une de mes torpilles et je perd ta position
dbdr: :innocent:
YannT: c'est osé quand même, parce que tu peux pas garantrir que je vais torpiller exactement sur ce tour là
Haashi: yesss je perce le top 50 après avoir fix un bug débile
Haashi: meme top 40 :o
dbdr: gg Haashi
YannT: dbdr: avoue c'est un bug ou une feinte de 5èmùe dan que t'as codé exprès? :p
dbdr: c'est un anti-YannT codé expres
YannT: mouais, y'a 12 raisons pour lesquelles c'est un gros coup de bol que ça ai fonctionné
YannT: tu devais avoir autre chose derrière la tête là ;)
Swagboy: Techniquement YannT il vois que tu torpille au tour n, il surfac au tour n+1 et tu reçois ta réponse au tour n+2 donc pas besoin de devinner!
Haashi: YannT, j'ai deja vu ce move de dbdr, c'est juste qu'il a besoin des cases de droites pour te suivre et te defoncer la tronche
YannT: c'est pas faux Swagboy
Haashi: je pense que quand il sait ta pos exacte, son bot passe en mode offensif, et essaye de t'éclater avant que tu essayes de silence away
Haashi: d'ailleurs c'est une bonne strat si tu sais qu'il a silence il y a 4 ou 5 parce que t'as potentiellement le temps de le torpiller 2 fois
YannT: sauf que j'ai un tour d'avance, s'il me choucroute pas mon targeting moi aussi je sais où il est et je gagne après
Haashi: 4 ou 5 tours*
YannT: tu regardes j'ai N tours de torpille chargée et je tire pas pour l'achever parce que je l'ai perdu en fait, mais sans le bug il est mort
Swagboy: Oui mais tu perds 1pdv et potentiellemnt beaucoup de camouflage
Swagboy: Il faut être sûr de son coup
YannT: je le suis en fait, sauf que j'ai une case de décalage avec la réalité à cause du surface
Swagboy: C'est à ça que sert la simu tu me diras
BigUP: 18h passé ! :) C'est l'heure de l'ouverture de league la !?? ;)
irmo322: L'argent se sera le 27
BlaiseEbuth: Ouai. Mais pas le jour
irmo322: ce*
BigUP: argh ! pas de [CG]SaiksyApo dans le coin !! ;(
YannT: et c'est prévu vendredi aussi
Aveuh: Voilà bronze c'est plié. La suite demain
Aveuh: (enfin ... je pense)
WhatTrickeryIsThis: Apo il est là
WhatTrickeryIsThis: derrière moi
WhatTrickeryIsThis: il me regarde
WhatTrickeryIsThis: mais je me protège :hear_no_evil:
YannT: allez, go full refacto
YannT: c'est trop le bordel mon truc
Nagrarok: mon code est hyper propre perso, je comprends pas comment c'est arrivé
Zorg1: mais il n'est pas classé Apo. Seulement au fond de la ligue Bronze, en attente ...
egaetan: le mien est sale
BigUP: Nagrarok, le hazard !?
Nagrarok: c'est sûrement un accident oui
Zorg1: moi c'est simple je vais l'envoyer à google pour qu'il l'encadre :p
BigUP: Si je gagne le contest, je veux qu'on enseigne mon cod edans toutes les ecoles !
Zorg1: Automaton2000 t'as du beau code de compétition toi aussi ?
Automaton2000: il y a plein de truc
TidyMaze: y'a des gens qui maitrisent haskell ici ?
TidyMaze: petite question sur la boucle infinie
BigUP: non merci
Zorg1: je tiens à l'intégrité de mon âme
Zorg1: (un petit troll sur les langages après le boulot ...)
joelthelion: Pose toujours TidyMaze, même si ça fait longtemps
TidyMaze: pour lancer la double principale je cherche une fonction de type similaire à (a -> IO[a]) -> a -> IO()
En gros un si j'ai une fonction qui prend un etat, fait un effet de bord et retourne un nouvel etat, je veux la transformer en une fonction qui fait ça sans fin
TidyMaze: *boucle
TidyMaze: c'est un truc basique mais j'arrive pas a combiner `forever` et `foldl`
TidyMaze: (ou foldM)
Zorg1: c'est pas simplement une fonction qui s'appelle elle même sans fin une boucle infini en fonctionnel ?
joelthelion: un mapM_ avec une liste infinie peut-être? Je sais que j'ai fait ça, mais ça fait tellement longtemps...
joelthelion: tu as essayé de chercher avec hoogle?
QzL: https://www.codingame.com/replay/442331610
On ne tiens pas compte du joueur qui tue en 1er ?
TidyMaze: > c'est pas simplement une fonction qui s'appelle elle même sans fin une boucle infini en fonctionnel ?
hmm je pense que oui, faut juste utiliser >>= en fait !
TidyMaze: mapM_ a besoin d'une liste de quelque chose j'ai l'impression
TidyMaze: http://chat.codingame.com/pastebin/896277eb-d331-40a9-85bf-9e73f2c3eca5
TidyMaze: je pensais pas que ce serait si simple
Zorg1: hé hé comme en erlang en fait ;-)
JBM: la battledev c'est demain a partir de 19h
Zorg1: t'es inscrit et tu vas nous en faire un stream ? :heart_eyes:
JBM: c'est probablement interdit
JBM: et puis me voir galerer entre C++ et Java, ca va pas etre passionnant
Zorg1: te forcer à faire du Java ... je crois que j'en suis pas à ce point dans le sadisme
JBM: TidyMaze: apres t'as la version "jme la pete" avec fix
JBM: je crois que je l'avais mis en version troll dans le forum
JBM: (mais y'en a qui l'ont pris au serieux)
TidyMaze: ça a pas l'air simple `fix` ^^
JBM: je trouve plus mon post :'(
JBM: enfin en gros: flip fix a $ \loop a -> [blablabla qui appelle loop a']
Zorg1: CG l'a modéré ? :D
JBM: ouais c'est pas Tous Publics
Zorg1: Not Safe For Javaist ;-)
JBM: ah voila! https://forum.codingame.com/t/haskell-auto-generated-code-improvements/29858/7?u=jbm
TidyMaze: j'ai toujours pas compris ^^ bref t'embete pas :D
Sympa tes exemples dans le forum, on a du mal a croire que c'est un code utile :D
Zorg1: (mais c'est vrai que les templates en Haskell sont pas terrible)
JBM: haha le langage par defaut est php
Zorg1: *les templates CG
Zorg1: oui c'est une de mes manies
Zorg1: (au boulot ils ont compris, maintenant, quand je dis "loin d'être optimal" ^^)
JBM: on peut plus changer de langage dans leur merde?
JBM: ah si c'est en haut, j'avais pris ca pour de la pub
Zorg1: ah dans battle dev
JBM: mouais il est pas gegene leur template a eux non plus
JBM: rha, c++ il a de l'inference de type, mais juste quand ca gene
Zorg1: bon si je fixais mon bot au lieu d'écouter JBM râler ?
Zorg1: Automaton2000 donne moi une idée !
Automaton2000: qui est le plus beau ?
Zorg1: :D
leojean890: 71/329 ce soir, et j'ajoute les mines.. vais-je monter ?? ;P
Zorg1: non c'est corrigé un bug qui fait plonger
iTrooz_: Il y a moyen d'avoir la correction des clashs une fois terminés ?
leojean890: plonger ? dans ce jeu c'est plutôt faire surface non ?^^
Zorg1: hihi
Vry: Chut y'a not' président qui parle ...
Zorg1: ha c'est pour ça que c'est désert ici
leojean890: ah il va annoncer le prolongement de 4/5/6 semaines j'imagine alors
Zorg1: oui jusqu'à au moins début mai ...
Zorg1: "avril ne te découvre pas d'un fil" en version hardcore
leojean890: histoire de faire un peu comme la chine en terme de process..
leojean890: j'avoue ;) bien ressorti le proverbe:)
leojean890: je suis pas sûr qu'autant ce soit nécessaire sachant que la période d'incubation est de 2 semaines mais bon ;)
domak: purée, les chinois nous ont refilé un virus, mais en plus de ça ils m'ont filé un cable pourri...
leojean890: ptet 4 pour compenser les transmissions restantes..
leojean890: lol achète en un autre ?:)
domak: commandé en ligne...
Zorg1: ça me rappelle les cables USB tout petit
YannT: ahahah jk'ai trouvé comment gagner contre dbdr
domak: en le niquant?
YannT: bug autowin je crois que c'est le referee
YannT: du coup je vais pas mettre le replay...
leojean890: c'est quoi autowin ?
YannT: ça fait planter un truc et me donne la win sur un output mal formaté
leojean890: je ne connais pas ;o
Zorg1: ah du DOUBLE HULK
dbdr: faut signaler ça...
dbdr: DOUBLE SUB
dbdr: encercler l'adversaire
dbdr: ah je sais
dbdr: 0 0 14 14
dbdr: au premier tour => 2 subs
dbdr: 0 0|14 14
Zorg1: waouh
dbdr: apres c'est plus chaud pour les ordres
ThomasNicoullaud: sérieux ? :D
ThomasNicoullaud: y a un replay qui tourne ?
Zorg1: t'as push un truc finalement ThomasNicoullaud ?
ThomasNicoullaud: nop toujours pas
ThomasNicoullaud: je dois bosser 1h au grand max par jour
Zorg1: monsieur a un statut d'"observateur" :D
ThomasNicoullaud: et y a plus de code à fournir que d'habitude
Zorg1: oui c'est vrai
fenrir: Magus: pour le n/(n-1), j'ai trouvé ça: https://fr.qwe.wiki/wiki/Bessel%27s_correction (bien après la bataille)
leojean890: j'ai 1500 lignes :O:O
leojean890: mais si je clean mon code j'en perds bien 200/300
ThomasNicoullaud: j'en suis à mon système de détection
leojean890: chad l'état actuel
ThomasNicoullaud: j'ai pas codé autre chose encore :D
ThomasNicoullaud: je suis pas prêt de push
Haashi: pareil, j'ai une version bidon, et je suis deja a 500, ce qui double quasiment la taille de mes contests habituels
leojean890: tu tentes de détecter les silences ?;)
ThomasNicoullaud: oui
leojean890: bon courage c'est hardcore
ThomasNicoullaud: en bitmap toussa toussa
Haashi: enfaite la vraie histoire c'est qu'il y a beaucoup de trucs indépendants
leojean890: moi j'y suis pas parvenu au bout d'un nb de silences
leojean890: ça rend ma détection moins précise quoi
Haashi: faut vraiment que j'apprenne a faire des bitmaps
leojean890: y'a un codingamer qui a écrit un article là dessus, MSmith :P
ThomasNicoullaud: tiens la bible : https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious
leojean890: il en a mis plein partout dans le contest xmas rush
leojean890: genre tout tout remplacer par des bitmasks:o
Haashi: eh beh
Haashi: ca donne pas envie
BlaiseEbuth: T'es en c++ ThomasNicoullaud ?
leojean890: mdr t'as intérêt à être rigoureux quand tu fais ça
ThomasNicoullaud: BlaiseEbuth yep
ThomasNicoullaud: et je fais des test unitaires pour une fois
ThomasNicoullaud: lol
leojean890: car pour comprendre tes bugs t'es pas sorti de l'auberge si t'en mets lein partout sur 1000 lignes
BlaiseEbuth: Tu les stockes dans quoi tes bitsets ?
ThomasNicoullaud: unsigned short
leojean890: sauf si tu automatises ça avec une fct
BlaiseEbuth: Hmm du coup t'en utilises plusieurs pour stocker la map ?
Zorg1: c'est bon il a fini causé dans sa tente not'bon président ?
dbdr: gzipper la map pour tenir dans 16 bits
Zorg1: génie
dbdr: si c'est encore trop gros, gzipper une deuxieme fois
dbdr: en recursif pour les pros
Zorg1: jusqu'à atteindre le bit philosophal qui contient tous les autres ?
BigUP: dbdr, ca divise par 2 a chaque fois a peu pres ...
dbdr: en fait un RLE ça pourrait marcher, parfois, ya bcp de 0. par contre ce sera pas rapide
BigUP: 1 bit to rule them all !
dbdr: oui, le qbit en superposition
Zorg1: comme les fax tu xor la ligne avec la précédente et tu fais du RLE
Zorg1: (ça marche bien)
dbdr: pas bete
BigUP: en attendant ma geoloc ne marche pas...
Zorg1: t'as mis un GPS dans ton sous marin ?
BigUP: et mon code fait (presque) top 100 sans faire ce que je pensais avoir codé
dbdr: c'est peut-etre la raison?
dbdr: désolé...
domak: un code rebelle
leojean890: mdr pareil j'avais des bugs horribes hier et j'étais 120eme
domak: oui des fois faut pas corriger les bugs
leojean890: genre j'avais inversé des x et y à plusieurs endroits..
domak: c'est une feature
leojean890: faire + de tests U !
Zorg1: "tester c'est douter"
BigUP: redoutable ! (je devrais en faire un nom de sous-marin...)
leojean890: j'avais mis if (i,j) in islands alors le sous marin ennemi n'est pas là
leojean890: mais j'avais inversé x et y
leojean890: donc ma loc en a pris un coup
leojean890: ça m'apprendra à utiliser (i,j) qqpart et (x,y) ailleurs
domak: oui moi j'utilisais row, col jusqu'à ce que je m'apperçoive que j'avais inversé quand je passais à x,y ...
Haashi: bwarf
Haashi: dis toi que comme certaines personne ont du mal avec leur gauche et leur droite
Haashi: je confond toujours les coordonées x,y
domak: ça me rassure
Haashi: il y a des jeux ou je l'erreur 2 fois donc ca s'annule :)
domak: on va faire un club
leojean890: ouais faut essayer d'être assez clair dans les noms de variables pour pas se perdre:P
domak: en plus commencer en haut à gauche je m'y fais jamais
Haashi: sur a*craft par exemple, quand je print mon board, il est rotate 90 quoi
Haashi: mais vu que dans mon code j'ai de nouveau fait l'erreur, ca marche
leojean890: faut pas coder trop vite sans assez faire attention => rigueur
leojean890: ou faire des tests U pour détecter ça
leojean890: mais bon j'ai fait l'erreur de pas suivre ces principes ;)
leojean890: bah ouais tant que t'es cohérent avec toi même ça marche ;)
Haashi: j'ai fait une seule fois des tu
Haashi: c'est sur hypersonic
Haashi: c'est pour m'assurer que j'avais la bonne simu
domak: tiens y'a plus de java que de c++ dans le top 10
domak: ça change un peu de d'hab
domak: bon ça va pas durer non plus
leojean890: hypersonic ça peut se justifier ouais avec les propa d'explosions etc..
dbdr: 5/10 langages JVM dans le top 10
dbdr: avec YannT en Kotlin
Zorg1: ça manque un gars en clojure
dbdr: en un groovy
dbdr: *et
dbdr: et un Scala pour multiplier le temps du rerun par 10
YannT: j'aime bien le kotlin
Zorg1: j'avais fait du groovy pour scripter soapUI. m' pas laisser un souvenir impérissable
YannT: player.findTorpedo(opponent)?.let { player.torpedo(it) }
YannT: ça a quand même la classe
YannT: find torpedo TORPEDO IT
dbdr: Zorg1 c'est mieux qu'un souvenir cauchemardesque
Zorg1: finalement même perl j'ai trouvé ça rigolo quand j'en faisais
dbdr: to torpedo c'est un verbe? torpede?
dbdr: YannT oui c'est expressif
YannT: et surtout agréable à coder
YannT: tu sens que c'est un language pensé par des devs
YannT: tu veux faire un truc par intuition tu te dis que ça devrait être possible, et ça l'est :p
Nagrarok: le meilleur truc c'est quand même les classes qui mettent 50ms à se charger, c'est bien intuitif
YannT: mais une fois que c'est chargé ça te met la patée
YannT: alors ça va :p
Haashi: on ma redégager du top 50
Haashi: :(
Haashi: m'a* -er+é
QzL: Lorsqu'on utilise silence et qu'on se déplace de plusieurs case, la totalité des cases est considéré comme visitées ?
YannT: oui
bourgeof: kotlin, c'est mieux que le java mais moins bien que du scala. Mais utiliser la JVM sur Codingame... Ca peut êtr frustrant...
bourgeof: Le C++, c'est un peu moche, mais il n'y a pas de mauvaises surprises.
YannT: j'ai prouvé que ça tenait la route en passant légende sur UTTT en kotlin
YannT: (bon après y'a un plafond de verre hein, mais il est hauuuut)
YannT: sur un contest, c'est un non sujet
RomanceDawn: Le C y a pas d'objet c'est encore mieux :kissing_heart:
YannT: (et de mémoire dbdr est dans le top sur UTTT en Java)
RomanceDawn: yes
Vry: J'aime pas le starter C avec fgetc ça veut souvent dire que les inputs sont fourbes ... \n \r tout ça ...
RomanceDawn: ah ba les string ...
bourgeof: YannT, certes. Mais qui dit qu'il ne serait pas top 10 en c++ avec le même algo...
YannT: il est en top10 avec Java hein
YannT: (ou pas loin)
bourgeof: Heu 30e à ce que je vois
YannT: souvent on blame les languages, mais le facteur limitant est entre la chaise et le clavier :p
YannT: (après oui, ça joue, mais moins qu'on aime à le prétendre)
bourgeof: J'aime bien le scala mais j'ai abandonné sur Codingame depuis Wondev Woman
YannT: je ne connais pas
bourgeof: Un minimax ou le plus performant gagne...
YannT: mais j'ai regardé le code java, décompilé du bytecode kotlin, pour optimiser finement des trucs sur UTTT (ce jeu, t'es vraiment à la chasse de la milliseconde)
YannT: et franchement c'est optimisé
Haashi: de toute façon ce qui compte
Haashi: c'est d'être le premier d'un langage
Haashi: et d'etre le premier parmis les non c++ :)
bourgeof: Avant il y avait un t-shirt à gagner si tu étais le premier dans ton language...
irmo322: Raaah... J'ai des probas négatives... J'ai du faire un truc pas comme il faut...
Vry: Ahhhhh je le savais, la lecture de la map foire ...
Vry: Bon, je lis les inputs \o/ ... y'a plus qu'à ...
Zorg1: ha tu commences juste
Vry: Ouais ... faut que stock la map et commence par barboter de-ci de-là
TidyMaze: hahaha bonne chance https://www.codingame.com/share-replay/442367959
Vry: Pas mal le test unitaire ...
Bob: je n'arrive pas à dire si une analyse de la séquence complète de moves de l'adversaire me donnerait plus d'infos que mettre à jour une map à chaque tour
Bob: par rapport à sa position, j'entends
Zorg1: actuellement je met à jour une map
Bob: je me doute que la séquence complète peut m'aider à préciser une paire de trucs et à prévoir nu possible mouvement au tour courant
Vry: Je vais commencer par éviter les îles ...
RomanceDawn: faudrait qu'ils fassent un test de connexité lors de la création de la map
Zorg1: oui je trouve ça pas terrible les maps non connexes
Zorg1: ça réduit surtout la surface de jeu
Bob: bof, c'est réduit pareil pour tout le monde
Bob: faut juste pas se coller dans la petite zone au départ :D
RomanceDawn: hum
Vry: Oui c'est vrai que le placement étant libre c'est dommage de se coller volontairement dans le lac ...
Bob: j'ai vu un replay avec un bot qui s'est coincé dans un lac d'une seule cellule...
Bob: #moche
Zorg1: nice
RomanceDawn: ouais mais comment détecte le lac simplement
YannT: j'ai trouvé qu'une seule utilisation de la séquence de déplacements ennemi
Zorg1: BFS est ton ami
RomanceDawn: hum
YannT: et elle est assez anecdotique :)
Bob: bah y a pas de mystère, il faut calculer la taille des zones
Vry: RomanceDawn : flood fill de tout les points d'eaux non flood fillés
Bob: souviens-toi de Surface
RomanceDawn: ah ba oui
Haashi: Moi je fais un calcul d' "adjacence"
Haashi: je regarde la somme des voisins de mon voisin de mon voisin de mon voisin de mon voisin de mon voisin
Haashi: et je prend le max
Haashi: ca me fait spawn au milieu de l'ocean généralement
Haashi: t'as compris AutomatonNN, c'est comme quand tu dis contest, mais avec voisin
AutomatonNN: ouaip
RomanceDawn: l'important c'est les valeurs
Bob: 100 % d'accord
Bob: notamment 42
Vry: Voilà, c'est mon âge en plus :p
R4N4R4M4: Salut tout le monde
irmo322: salut
R4N4R4M4: Mince, j'ai raté le début du challenge ?
Zorg1: on dirait bien
Zorg1: :)
YannT: oh d'une petite semaine juste
Nagrarok: il reste 25 jours t'es large
Vry: Yo R4N4R4M4
RomanceDawn: c'est un challenge surprise de ce que j'ai compris
R4N4R4M4: Ca finit quand ?
Zorg1: dans un mois
RomanceDawn: 1 mois
Vry: Je commence depuis une heure ...
Vry: À Noël ...
R4N4R4M4: Ah bon ça va si il reste un mois, je vais me recoucher alors :D
Zorg1: (moins une semaine, ça a commencé vendredi dernier)
R4N4R4M4: Ah oui fin le 20 avril
R4N4R4M4: Mince alors, je venais juste pour demander qui fait le BattleDev demain, mais bon c'est mort du coup :D
Zorg1: t'as même le temps de faire une simu ^^
R4N4R4M4: En un mois c'est clair
YannT: je suis inscrit, je verrai si ça m'inspire ou pas :)
R4N4R4M4: Ah purée, c'est un challenge d'euler... Ca va être tordu :D
Zorg1: non ça va
Vry: Je suis inscris aussi ... pour voir
R4N4R4M4: Bon, allez, je lance l'énoncé, purée, je me suis pas préparé, je pensais avoir une soirée tranquillle
Stilgart: tu sais jouer à la bataille navale ?
Zorg1: ça t'as pas semblé bizarre qu'il y ait du monde sur le chat ?
Stilgart: c'est une version avec un seul navire d'une case mais qui bouge </tldr>
Stilgart: Zorg1: en vrai, le chat est drolement désert
Zorg1: et on peut lancer des torpilles
Stilgart: je m'attendais à des cohues de lycéens :/
Bob: bah non
Bob: les lycéens ils sont là par obligation Stilgart
Zorg1: sinon ils sont sur facebook ou le truc à la mode chez les jeunes
RomanceDawn: insta
Bob: tu penses bien que si il n'y a personne pour les traîner en salle de TP à faire thor en python auquel ils ne bitent que dalle, ils vont pas le faire d'eux-mêmes ) la maison
R4N4R4M4: je connais pas Captain Sonar, je vais me sourcer
Bob: tic toc
RomanceDawn: tiktok ouais aussi
Zorg1: ah oui j'ai vu des trucs trainés
RomanceDawn: yay je suis passer wood 1 \o/
Bob: hmmm magnifique série de 10 défaites en début de score
Bob: ah mais invalid move bien vu Bob
egaetan: gg Bob
Vry: Cool mon floodfill fonctionne du premier coup ... je n'ai pas perdu la main :p
Vry: Cadeau ... (ou pas)
Vry: http://chat.codingame.com/pastebin/6abd0114-c528-42f4-96e3-e46e316c888e
R4N4R4M4: GG Vry
RomanceDawn: t'aurais pu le faire en iteratif quand même :p
Vry: RomanceDawn, pas envie de réflechir pour sortir de Wood2
egaetan: gg dolmen1234 !!
egaetan: Java > C++ dans le top10 !!!
ThomasNicoullaud: il reste 25 jours xD
ThomasNicoullaud: 2 contests et demi
egaetan: remets toi au java ThomasNicoullaud
ThomasNicoullaud: Sur CG c'est fini je Java :)
TidyMaze: IA entièrement recodée en Haskell ! Et ça marche mieux qu'en Scala ^^ du second coup
ThomasNicoullaud: je vois bien un petit ClosetAI sortir de null part dans quelques jours
ThomasNicoullaud: avec encore un truc imba
ThomasNicoullaud: comme à Code Royal
ThomasNicoullaud: ha non c'était RoboStac que je voulais dire autant pour moi :D
Bob: eh mais je monte
Bob: incrédible
YannT: j'ai fait un refacto complète, ayé ça simule des ordres :)
YannT: bon par contre j'en fait rien, mais dans l'esprit, la simu est écrite
RomanceDawn: gg
Bob: allez on rêve de top 100
YannT: j'ai gagné genre 10 lignes de code en nettoyant tout ahah
YannT: mais c'est plus propre
Bob: #pasLaTailleQuiCompte
RomanceDawn: t'as bitwisé aussi ?
YannT: non
YannT: d'abord simu, ensuite utilser la simu à quelque chose de concret, et ensuite optimiser pour améliorer les perfs de la simu
YannT: c'est en tout dernier ça
YannT: au contraire, là je viens de rajouter des objets
YannT: j'ai sciement dégradé mes perfs pour avoir de la lisibilité et pouvoir bosser :)
RomanceDawn: c'est de la triche de faire les choses dans la bon ordre:stuck_out_tongue:
Bob: pourquoi pas des tests unitaires tant que t'y es
RomanceDawn: héhé
Bob: damn, 103e
YannT: bah rejouer un replay pour vérifier que les frames restents constantes quand tu fais de la refacto
YannT: c'est un peu du test selenium hein :p
Bob: :)
egaetan: YannT barbare
YannT: c'est quand même beau le kotlin
YannT: generateSequence(position) { direction.move(it) }.drop(1).take(distance).all { it.valid() && !path.contains(it) }
YannT: checker la validité d'un silence en one-liner
YannT: (bon c'est absolument pas perf par contre, mais c'est zouli)
pb4: alors pour un néophyte, je crois que je ne comprends pas un mot de cette ligne :D
YannT: sequeence de positions x,y sur N répétions et tu vérifies qu'elles vérifie toutes une condition (valide et pas sur le chemin déjà emprunté)
YannT: (et drop 1 parce que tu vérifier pas le position initiale)
pb4: drop(1) ?
pb4: ok
YannT: la position initiale étant par définition empruntée, ça rend tous les silences invalides si tu la garde
YannT: (et oui, il était pas là au premier essai le drop 1)
pb4: :D
pb4: et avec l'habitude ça devient vraiment lisible ?
YannT: grave ça se lit comme de l'anglais assez facilement
Vry: En même temps si je ne marque pas les cases que je visite ...
Bob: c'est ton choix Vry
YannT: pb4: player.findTorpedo(opponent)?.let { player.torpedo(it) }
YannT: fin torpedo, TORPEDO IT!
YannT: +d
Vry: Le bot random a eu de bol il a quand même fait 7 move avant de se vautrer ...
Zorg1: la magie du bon random
Vry: 33 tour \o/ mon record
Vry: Et j'ai gagné ...
Vry: Je soumets !
Bob: étape suivante : 45 tours
Bob: puis : 78 tours
Bob: et là, seuls les vieux cons comprennent
Zorg1: j'ai jamais vu un 78 tours en vrai
Vry: Moi si je crois mais dans une brocante ça ne compte pas ... mais 33 et 45 oui
Bob: on avait une paire de 7 8quand j'étais gamin
RomanceDawn: moi j'ai compris et je suis pas vieux
RomanceDawn: et pas con
RomanceDawn: fin je crois
Bob: c'(est ce qu'ils disent tous
**Stilgart est officiellement un vieux con
Stilgart: merci bob :)
Bob: il vous en prie
Bob: au fait j'ai cessé d'être toi
Bob: et sans vouloir être vexant, ça marche mieux :p
Stilgart: je confirme que c'est une bonne idée :)
Stilgart: faudrait que je fasse ça aussi
Stilgart: mais AutomatonNN ne veut pas m'aider :(
AutomatonNN: on aura pas mon diplome qui fait des chaines de caracteres aussi
Stilgart: huhuhu
Azkellas: ahah excellent
Azkellas: toujours aussi pertinent AutomatonNN
AutomatonNN: :)
Bob: t'as pas aussi un diplome qui fait des chaines de contest, AutomatonNN ?
AutomatonNN: ptet mieux que moi le contest de ce que j'ai fait :D
Vry: Il est "costaud" Ctp. Levine ...
Bob: et encore il a été nerfé je crois
Vry: D'ailleurs c'est pas Cpt ???
Bob: si
Vry: Y'a une typo !
Vry: Je ne sais pas comment il fait mais au bout de quelques move seulement il arive à me tirer dessus alors que je ne fais que des MOVE
Bob: ben
Bob: déjà avec des move on peut vite dégrossir
YannT: selon comment les iles sont fichues, les MOVE ça peut très facilement donner ta position en fait
Bob: après, il a peut-être du bol
Bob: mais je suis d'accord avec YannT
Vry: En effet YannT
Vry: Mid Wood2 avec un bot random qui ne tire pas et qi fait surface quand il est coincé ... :p
Vry: +u
Vry: Y'a plus qu'a localiser l'adversaire pour tirer juste et bien ...
Zorg1: yapuka
Vry: :sleeping:
Vry: Faut parser le bousin du coup ...
Bob: c'est ça
Zorg1: c'est pour ça que egaetan était parti sur strtok ;-)
Vry: :zzz:
Vry: L'est fou lui ...
Vry: char* p fait le job tout aussi bien ! :p
egaetan: hahaha
R4N4R4M4: Allez, je push mon move aléatoire
Stilgart: Vry: tirer au pif, ça donne des infos :)
Stilgart: et par accident, ça touche aussi
R4N4R4M4: Ca marche bien le tir random Stilgart ?
Vry: Moi pour l'instant je ne tire pas ... :p
R4N4R4M4: Ah mince, j'ai déjà besoin d'un BFS pour le tir !
Bob: au minimum si tu tires et que ça ne touche pas, ça te donne déjà jusque 9 cases où il n'était pas
R4N4R4M4: pas bête Bob
Bob: et si lui n'a pas fait de surface/trigger/torpedo dans la même zone et qu'il perd de la vie, tu sais que ça a touché
Fangel: encore faut il répondre proprement à la question "est ce que j ai touché" :)
Bob: alors tu peux au moins savoir si t'as pas touché
Swagboy: sauf si il a fait surface Bob!
Bob: j'ai bien dit si il n'a pas fait surface
Swagboy: Ou qu'il s'est tiré dessus
Bob: dit aussi
Swagboy: ah oui mea culpa
Vry: Pourquoi 9 cases ? pas 5 ?
R4N4R4M4: Houlala vous parlez que de trucs que j'y comprends rien là :D
Fangel: la zone d effet touche les diagsd
Bob: la torpille touche 9 cases
Bob: par contre elle se déplace 4-connexe oui
Vry: Ok un carré 3x3 et celle du centre -2 pv donc
Bob: détail important : si tu essayes un tir de torpille invalide, il n'est pas effectué mais tu perds ton cooldown et il est signalé quand même
Bob: et je suis en train de me dire qu'on pourrait utiliser ça volontairement pour niquer la détection adverse...
Nagrarok: comment ça signalé ? il me semble pas que l'adversaire le reçoive
Nagrarok: je crois que j'avais testé
Bob: ah ?
Nagrarok: tu as vérifié ?
Bob: euh en fait non j'avoue
Nagrarok: x)
Swagboy: hehe
Bob: je ne sais pas d'où je sors ça du coup
Bob: mais tu perds ton cooldown
Swagboy: ça oui
Nagrarok: bah l'action était indiquée en tooltip dans l'IDE, quand il y avait les tooltips d'action
Nagrarok: ça t'a ptet induit en erreur
Bob: possible
Bob: bref, faut pas quand même
Zorg1: y a du monde en bronze
Vry: Combien ?
Vry: 429 en Wood 2
Zorg1: 340
Bob: 340
Zorg1: 400 en Wood2 ? je croyais que les boss avaient été nerfé
Vry: Je suis 231 avec un bot random qui ne tire pas mais fait surface quand il faut ...
Vry: Il est nécessaire de tirer des torpilles pour passer la ligue j'ai l'impression
Vry: Il doit y avoir un gros bouchon de bot coincé devant le boss
Bob: je ne crois pas que tu puisses t'en sortir sans attaquer un minimum
Zorg1: oui faut pas avoir peur de torpiller
Bob: la base c'est de détecter à peu près où est l'autre et pour wood 2 tu peux te permette d'aller au contact
Zorg1: j'ai aussi mis une détection de l'ennemi mais je ne sais pas jusqu'où il faut pousser pour passer en Wood 1
Vry: Parsing validé !
Vry: Pour egaetan ...
Vry: http://chat.codingame.com/pastebin/887bf19d-8039-4d67-9d86-184451cf44e5
Vry: bon ok vous m'avez convaincu ... je fait un floodfill de depth 4 max et je tire au pif sur l'une des cases ... :p
BigUP: Vry, je floodfill full en Python, ca passe
egaetan: c'est ce truc là qui me gênait
egaetan: while ( (*p) && (*p != '|') ) p++;
if (*p) p++;
YannT: ça me gène aussi oui
YannT: c'est très moche
Vry: C'est rigolo ...
Zorg1: c'est C-spirit ;-)
Azkellas: c'est C-moche
Vry: On place le pointeur sur le prochain | sans se faire piéger par le \0
Vry: Tu peux faire strchr sinon ... :p
Bob: merci mais non merci
Azkellas: :D
Vry: if (!p=strchr(p,'|')) break;
YannT: prochain contest: écrire un parseur XML en C
Vry: ça remplace le while
Vry: Déjà fait YannT :sunglasses:
R4N4R4M4: Bon je pushe random move + random torpedo :D
YannT: random ne suffit pas pour sortir de wood ici :)
Vry: Tu codes vite R4N4R4M4 ...
R4N4R4M4: je code random :D
Bob: le random c'est la vie
Zorg1: 1000 R4 sur 1000 claviers
Vry: Moi aussi mais j'ai commencé à 20h j'ai pas encore le random torpedo
Bob: le leaderboard des last battles qui s'update une fois par siècle, c'est chiant en fait
R4N4R4M4: J'ai fait simple, 4 directions random en ligne droite sur distance mini 2
YannT: Zorg1 il a fini en haut de bronze en se tirant dessus remarque
Zorg1: gna gna gna :D
YannT: :p
Bob: ah mais il faut saluer la performance
YannT: tout à fait!
Bob: histoire de ne pas parler que des trucs qui sont moches
R4N4R4M4: Ouais, le random passera pas wood2 :(
BigUP: On ne sait jamais sur un bon random ...
R4N4R4M4: vraiment très bon alors
Bob: il y a le bon random et le mauvais random tu'ois ?
Vry: En même temps le Boss Wood 2 se tire dessus aussi parfois ...
Vry: https://www.codingame.com/share-replay/442409488
BigUP: R4N4R4M4, ou au contraire, un tres mauvais random du coup ! ;)
R4N4R4M4: Ha ha, je bats BeberLeNewbie !! :D
BigUP: R4N4R4M4, respect, tu bats le maitre !
R4N4R4M4: C'est bon, je peux m'arrêter là :D
YannT: Vry: depuis le nerf ça
YannT: avant déjà il se tirait pas dessus, et en plus il visait le truc
YannT: ça faisait une marche pour passer
Bob: déjà que le bot minimal pour sortir de wood 2 est pas trivial
Bob: si en plus il faut qu'il soit doué...
YannT: j'ai du coder une detection ennemi dès wood2 pour passer
R4N4R4M4: Fini juste devant Beber, c'était bien visé
YannT: bon après je suis passé bronze d'un coup aussi -_-
R4N4R4M4: Ca va en faire des trucs à coder pour sortir de wood 2, je vais reprendre mon code de TRON
BigUP: R4N4R4M4, il faut au minimum un floodfill pour sortir de Wood2
Bob: non
YannT: et viser ses torpilles
YannT: surtout
BigUP: Bon en meme temps, parait qu'ils ont baissé le niveau des Boss
YannT: j'avais pas de pathing pour arriver bronze (avant nerf)
YannT: par contre je visait bien
R4N4R4M4: arf, j'ai trop la flemme de faire un BFS ce soir
Bob: pareil
R4N4R4M4: On peut rapidement deviner la position adverse non ?
Bob: j'ai juste fait une détection sommaire de l'adversaire
Bob: move vers lui + torpille et c'est marre
YannT: pareil, ça m'a passé bronze direct ça (avec un bot qui plantait des fois en cas de silence du coup)
Bob: une utilisation bourrin de silence et ça traversait wood 1 tout seul
YannT: finalement c'est thématique de devoir faire la detection comme prérequis pour sortir de wood
R4N4R4M4: Bon faut que j'évite le confinement :D
R4N4R4M4: C'est quoi les nouvelles actions de Bronze ?
R4N4R4M4: radar ? mine ?
Bob: sonar et mine/trigger
R4N4R4M4: ça marche comment ?
YannT: sonar c'est dès wood2
Bob: ah ?
YannT: ça marche bien
YannT: (trop même pour les mines)
R4N4R4M4: le sonar renvoie 4 char, y a quoi dedans ? 4 directions ?
Bob: sonar, tu demandes une des 9 sections de la map
Bob: et tu reçois Y/N au tour suivant
R4N4R4M4: ah ok
Bob: suivant que l'adversaire y est ou pas
R4N4R4M4: et silence ? c'est quoi ?
Bob: silence, tu peux te déplacer de 0 à 4 cases dans une direction
Bob: sans que l'adversaire sache laquelle ni combien
YannT: [0;4] MOVE dans une direction unique, non notifié à l'adversaire
Bob: il sait juste que tu as fait silence
R4N4R4M4: cool :D
Bob: note que tu peux faire silence ET move dans le même tour
R4N4R4M4: Par contre ça coûte cher j'ai vu
Bob: oui
Zorg1: bah encore heureux
Bob: sinon ça serait OP à mort
R4N4R4M4: C'est pas un teleport ? tu passes pas les îles ?
Bob: non
R4N4R4M4: d'ac
Bob: c'est comme si tu faisais N moves
R4N4R4M4: Et trigger ?
Bob: chacun étant soumis aux mêmes règles
Bob: trigger c'est pour faire sauter une mine que tu as posée plus tôt
R4N4R4M4: ah oui cool
Bob: mine, tu la droppes sur une case voisine
Bob: trigger, tu en fais sauter une
R4N4R4M4: oui, j'ai vu sur les replays
Bob: et ça fait les mêmes dégâts qu'une torpille
R4N4R4M4: ok merci
R4N4R4M4: Ca va me motiver pour sortir de wood2
R4N4R4M4: Y a pas d'explosions en chaîne ? :D
Bob: nope
R4N4R4M4: arf, pas drôle
Zorg1: j'imagine le gars nettoyer la map en déclenchant une mine ...
Bob: Hypersonic FTW
YannT: la refonte est opérationelle :)
YannT: même heuristique mais en utilisant des states et une simu, et j'ai bien validé sur un paquetr de replays que toutes les frames sont les mêmes <o/
YannT: maintenant reste plus qu'à faire des trucs avec...
YannT: et replacer les heuristiques par une eval :|
Bob: bon, au pieu
Bob: bonne nuit les choupis, soyez sages et restez chez vous
R4N4R4M4: bn
Zorg1: bn
Vry: bn
Vry: Aller dernier submit, random move + torpedo ...
BigUP: Bon je crois qu ecette fois, j'ai reussi a debugger mon GPS sans Silent... J'ai bien galéré