Chat:Fr/2020-03-25

From CG community
Revision as of 10:56, 15 June 2021 by Chat Log (talk | contribs) (Created page with "File:Default_avatar.png JBM: bon à part ça, vraiment, quand ça veut pas ça veut pas File:Default_avatar.png JBM: j'aurais dû faire la trajectoire pas débile ava...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Default avatar.png JBM: bon à part ça, vraiment, quand ça veut pas ça veut pas

Default avatar.png JBM: j'aurais dû faire la trajectoire pas débile avant les torpilles pas débiles

b0n5a1: sur un malentendu je te pousse

Default avatar.png JBM: streak de 23 sans défaite

Default avatar.png JBM: si ça ça passe pas

b0n5a1: 4 fois de suite contre moi

Default avatar.png JBM: pour toi oui

Default avatar.png JBM: forcément t'es hors submit

Default avatar.png JBM: ah voilà ça passe

b0n5a1: non

b0n5a1: voilà

Default avatar.png JBM: 25XP

Default avatar.png JBM: purée c'est pas cher payé

b0n5a1: t'es passé ?

Default avatar.png JBM: avec les boulets que je me paye en stream

Default avatar.png JBM: oui

b0n5a1: erf ok, leaderboard décalé

Default avatar.png JBM: oui il lagge grave

Default avatar.png JBM: https://snipboard.io/i71rVs.jpg et https://snipboard.io/Ix7tpL.jpg

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

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

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

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

Default avatar.png Professeur_Lama: ok merci

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

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

Default avatar.png Professeur_Lama: print("SE")

SeebOmega: il te manque une condition

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

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

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

Default avatar.png Professeur_Lama: ok dak

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?

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

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

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

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

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

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

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

Default avatar.png Professeur_Lama: Euh... BOB problème 1 !

Default avatar.png Professeur_Lama: En gros j'ai mis pour aller en diagonale et ça marche (bonne nouvelle)

Default avatar.png Professeur_Lama: MAIS

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

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

Default avatar.png Professeur_Lama: ui

Default avatar.png Professeur_Lama: ou

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

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

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

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

Default avatar.png Professeur_Lama: bêêêh oui je vois ce que tu veux dire mais euh là c'est ce que j'ai fait bob

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

Default avatar.png Professeur_Lama: ben je sais pas comment définir la position actuelle parce que je sais pas quel est le code original

Default avatar.png Professeur_Lama: ^_^

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

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

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

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

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

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

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

Default avatar.png JBM: donc *n/(n-1)

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

Default avatar.png JBM: bah elle bosse

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 !

Default avatar.png JBM: miam meme

Aveuh: Vas y JBM qui est venu se coller juste devant moi au classement pour me narguer

Aveuh: C'est quoi ça ?

Default avatar.png JBM: ouais, expres

Default avatar.png JBM: avec du code que j'ai pas retouche depuis hier

Default avatar.png JBM: j'ai colle quelques roustes a beber aussi hier

Default avatar.png JBM: pour la forme

b0n5a1: j'ai découvert ce matin que tu me narguais en plein stream ^^

Default avatar.png JBM: :p

Default avatar.png JBM: bah il parait que j'ai pris cher avec Aveuh la derniere fois

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

Default avatar.png JBM: et moi donc

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

Default avatar.png JBM: oh ben ca alors

Default avatar.png JBM: la battledev c'est demain a partir de 19h

Zorg1: t'es inscrit et tu vas nous en faire un stream ? :heart_eyes:

Default avatar.png JBM: c'est probablement interdit

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

Default avatar.png JBM: TidyMaze: apres t'as la version "jme la pete" avec fix

Default avatar.png JBM: je crois que je l'avais mis en version troll dans le forum

Default avatar.png JBM: (mais y'en a qui l'ont pris au serieux)

TidyMaze: ça a pas l'air simple `fix` ^^

Default avatar.png JBM: je trouve plus mon post :'(

Default avatar.png JBM: enfin en gros: flip fix a $ \loop a -> [blablabla qui appelle loop a']

Zorg1: CG l'a modéré ? :D

Default avatar.png JBM: ouais c'est pas Tous Publics

Zorg1: Not Safe For Javaist ;-)

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

Default avatar.png JBM: haha le langage par defaut est php

Zorg1: *les templates CG

Default avatar.png JBM: pas terribles

Default avatar.png JBM: l'euphemisme du siecle

Zorg1: oui c'est une de mes manies

Zorg1: (au boulot ils ont compris, maintenant, quand je dis "loin d'être optimal" ^^)

Default avatar.png JBM: on peut plus changer de langage dans leur merde?

Default avatar.png JBM: ah si c'est en haut, j'avais pris ca pour de la pub

Zorg1: ah dans battle dev

Default avatar.png JBM: mouais il est pas gegene leur template a eux non plus

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

Default avatar.png JBM: ameliore it

Zorg1: Automaton2000 donne moi une idée !

Automaton2000: qui est le plus beau ?

Zorg1: :D

Default avatar.png leojean890: 71/329 ce soir, et j'ajoute les mines.. vais-je monter ?? ;P

Default avatar.png leojean890: enfin descendre;O

Zorg1: non c'est corrigé un bug qui fait plonger

Default avatar.png iTrooz_: Il y a moyen d'avoir la correction des clashs une fois terminés ?

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

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

Default avatar.png leojean890: histoire de faire un peu comme la chine en terme de process..

Default avatar.png leojean890: j'avoue ;) bien ressorti le proverbe:)

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

Default avatar.png leojean890: ptet 4 pour compenser les transmissions restantes..

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

Default avatar.png leojean890: c'est quoi autowin ?

YannT: ça fait planter un truc et me donne la win sur un output mal formaté

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

Default avatar.png leojean890: mdr

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)

Default avatar.png leojean890: j'ai 1500 lignes :O:O

Default avatar.png leojean890: mais si je clean mon code j'en perds bien 200/300

ThomasNicoullaud: j'en suis à mon système de détection

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

Default avatar.png leojean890: tu tentes de détecter les silences ?;)

ThomasNicoullaud: oui

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

Default avatar.png leojean890: moi j'y suis pas parvenu au bout d'un nb de silences

Default avatar.png leojean890: ça rend ma détection moins précise quoi

Haashi: faut vraiment que j'apprenne a faire des bitmaps

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

Default avatar.png leojean890: il en a mis plein partout dans le contest xmas rush

Default avatar.png leojean890: genre tout tout remplacer par des bitmasks:o

Haashi: eh beh

Haashi: ca donne pas envie

BlaiseEbuth: T'es en c++ ThomasNicoullaud ?

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

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

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

Default avatar.png leojean890: mdr pas mal ça

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

Default avatar.png leojean890: mdr pareil j'avais des bugs horribes hier et j'étais 120eme

domak: oui des fois faut pas corriger les bugs

Default avatar.png leojean890: genre j'avais inversé des x et y à plusieurs endroits..

Default avatar.png leojean890: la lose ;P

domak: c'est une feature

Default avatar.png leojean890: faire + de tests U !

Zorg1: "tester c'est douter"

BigUP: redoutable ! (je devrais en faire un nom de sous-marin...)

Default avatar.png leojean890: j'avais mis if (i,j) in islands alors le sous marin ennemi n'est pas là

Default avatar.png leojean890: mais j'avais inversé x et y

Default avatar.png leojean890: donc ma loc en a pris un coup

Default avatar.png leojean890: ça m'apprendra à utiliser (i,j) qqpart et (x,y) ailleurs

Default avatar.png leojean890: cause de bugs!

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

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

Default avatar.png leojean890: faut pas coder trop vite sans assez faire attention => rigueur

Default avatar.png leojean890: ou faire des tests U pour détecter ça

Default avatar.png leojean890: mais bon j'ai fait l'erreur de pas suivre ces principes ;)

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

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