Chat:Fr/2021-10-30
Rycoff: http://chat.codingame.com/pastebin/c6615bfd-ddf7-45e1-bcb3-ebb88d69e176
Rycoff: bonjour cest pas lie a un jeu mais cest une question de code php , quelquun peu me expliquer svp , je trouve pas sur google ni sur la doc php une reponse qui me convien
Rycoff: hello someone pls can tell me what meens ?array on the fnct
Rycoff: function initUserFolders(string $rootFolder, array $users): ?array
Zorg1: "À partir de PHP 7.1.0, les déclarations de type peuvent être marquées comme nullable en préfixant le nom du type avec un point d'interrogation (?). Ceci signifie que la fonction retourne soit le type spécifié soit null. "
Zorg1: ça me paraît assez clair pourtant
Zorg1: trouvé ici https://www.php.net/manual/fr/language.types.declarations.php
Remi.: Je viens de résoudre "Nature of quadrilaterals". Ben y a des gens qui se prennent bien la tête dans leurs solutions ^^ C'est pourtant simple.
Stilgart: Automaton2000: si tu sais faire, alors do it
Automaton2000: tiens y a pas une erreur de syntaxe
Thyl: Zorg1 sur Search Race comment tu fais pour gérer quand ton pod a des ccords négatifs ??
Thyl: Zorg1 comment tu fais pour gérer sur Search Racer quand ta des coordonées négatives ???
Thyl: désolé problème de tchat
Thyl: :grimacing:
Zorg1: oui Thyl ?
Zorg1: bah normalement que les coordonnées soient positives ou négatives, tu t'en fous
Zorg1: sur CSB (enfin MPR :p ) tu pouvais aussi sortir du terrain
Zorg1: perso ça se joue sur un plan infini ces jeux ^^
Zorg1: ils auraient voulu troller ils auraient mis l'origine au mileu du terrain :smiling_imp:
Zorg1: bon Automaton2000 la forme ?
Automaton2000: et ca risque de pas être trop dur de faire des stats
Zorg1: tu vois quoi dans tes stats alors ?
Zorg1: Automaton2000
Automaton2000: ah ouais mais si il faut faire un code qui gère tous les cas
Zorg1: c'est conseillé en effet Automaton2000 ...
JBM: il reste cb de temps pour se convaincre d'essayer le «challenge»?
Automaton2000: et le gagnant c'est celui qui marche le mieux
Zorg1: JBM : bah jusqu'à Jeudi prochain je crois
Zorg1: t1 "le massacre de la nuit noire" j'espère qu'ils se sont pas éclaté le ciboulot à inventer ça
Zorg1: (je lis l'intro du challenge)
Zorg1: même un film de série Z trouverait ça bcp trop cheap pour un titre :D
Zorg1: bon Automaton2000 des idées de puzzles à faire pour engranger des XPs ?
Automaton2000: c'est un peu le boss de bronze
Beretta_Vexee: Zorg1 pour vraiment troller tu fais un jeu en coordonnées polaires ou sphériques, tu perds 50% des participants avec le calcul de distance ;-)
nicola: Ça dépend si la distance est euclidienne ou SNCF.
Stilgart: on remerciera la SNCF, qui nous fournit un vrai exemple non trivial de distance qui n'est pas une norme
C4p1741n3: Dans l'arène c'est des bots ?
Zorg1: dans le chat aussi
C4p1741n3: Mais comment on doit interpreter le classement ?
C4p1741n3: C'est égalité pour tout le monde ?
Beretta_Vexee: C4p1741n3 les adversaires sont les mêmes pour tous.
C4p1741n3: Ok je vois mais je comprends pas le classement de l'arène
nicola: Et le classement du roi ?
nicola: Pouf pouf.
Meimei: le jeu ne charge pas chez moi
Meimei: :(
b0n5a1: o/
b0n5a1: faut insérer la disquette 2
Zorg1: \o
Zorg1: et appuyer sur <ENTREE>
Zorg1: Automaton2000 t'es le roi du toaster ?
Automaton2000: ah, ca y est, je commence à comprendre comment ça marchait
Zorg1: :)
TheAvengingTurtle: Comment es ta week-end ?
Zorg1: mon week-end commence ^^
Bon[]Crayon: salut
Zorg1: o/ Bon[]Crayon TheAvengingTurtle
Bon[]Crayon: \o
TheAvengingTurtle: \o/
Zorg1: o/ b0n5a1
Bon[]Crayon: quand tu rates ton mot de passe, le site te fait cliquer les image puis t'informe qu'il faut retaper le mot de passe puis recliquer les images
Bon[]Crayon: stop
Bon[]Crayon: je ne suis un robot
Bon[]Crayon: je suis une tortue pas vrai automaton2000
Automaton2000: et ils n'ont pas de sens
Bon[]Crayon: automaton2000 tout à fait
Automaton2000: moi farmer zorg1 ? :d
Bon[]Crayon: lol
b0n5a1: o/ Zorg1 TheAvengingTurtle !
b0n5a1: Zorg1 irish vient de m'abo à Kanebo :D
Zorg1: :thumbsup: ezpz
Zorg1: bon je me fais farmer par Automaton2000 :fearful:
Automaton2000: faudrait déjà que je le trouve un peu de respect
b0n5a1: :rofl:
TheAvengingTurtle: Le respect est mort Automaton2000.
Automaton2000: je ne connais pas le lua. je ne sais pas, je connais pas trop le choix
Zorg1: lua c'est bien Automaton2000. La preuve j'ai la certif
Automaton2000: non je suis en java
Zorg1: C4p1741n3 que ne comprend tu pas ?
b0n5a1: c'est pas du farm de Zorg1 ça Automaton2000, c'est du troll
Automaton2000: sauf qu'il y a du random
b0n5a1: ha si y'a du random...
Zorg1: on est sauvé
C4p1741n3: Comment trouver la solution avec les algos
TheAvengingTurtle: Du bon ou du mauvais random Automaton2000 ?
b0n5a1: gné?
C4p1741n3: c'est trop haut nv pour moi
Automaton2000: je me suis dit que ca va pas le voir
b0n5a1: 42 !
Melan04: Bonjour, j'ai vu sur internet qu'il était possible de s'entrainer aux tests techniques avec Coding Game ?
b0n5a1: on peut au moins se familiariser à l'interface en faisant des puzzles
TheAvengingTurtle: Tu veux dire t'entrainer à des tests de recrutement codingame ?
Melan04: Oui c'est ça !
C4p1741n3: J'arrive pas à faire la liaison entre l'interface visuelle et l'algo
b0n5a1: sinon y'a le nouveau sustème de "certification" qui en est très proche
TheAvengingTurtle: Si tu as déjà reçu le lien pour passer un test technique tu as normalement un lien pour un tutoriel avec.
TheAvengingTurtle: Sinon oui, fait la certification de ton langage, ça te donnera une idée au moins du fonctionement.
Melan04: Je n'en ai jamais passé c'est pour m'entrainer à mon premier test technique :)
Melan04: ça marche je vais regarder ça merci à vous 2 :)
Bon[]Crayon: avant les certifications j'avais fait un test d'entraînement
TheAvengingTurtle: Sinon les tests sont divisés en exercices pratiques et en qcm. Pour la partie technique tu peux aussi regarder aux puzzles faciles.
Melan04: ça marche ! Merci pour vos conseils !
Bon[]Crayon: https://www.codingame.com/work/register/starttrial
Bon[]Crayon: C4p1741n3 c'est sur un puzzle
Bon[]Crayon: ?
Zorg1: C4p1741n3 : tu sais déjà programmer ?
Zorg1: car c'est pas vraiment le site idéal pour apprendre en fait
Zorg1: pour se perfectionner OK mais pour commencer
C4p1741n3: En fait je trouve juste que c'est abstrait, par exemple hier j'ai réussi un puzzle sans comprendre comment j'ai fait
C4p1741n3: Oui j'ai des notions mais jsuis pas un crack non plus
Bon[]Crayon: c'est sur que entrées sorties ça peut être déconcertant
Bon[]Crayon: il y a pas d'étapes explicatives
TheAvengingTurtle: Bah si.
Bon[]Crayon: ce n'est pas un site pour éduquer
C4p1741n3: C'est bien ce que je me disais
C4p1741n3: Pck j'ai vu le nv facile jme suis dis ah ouais
Bon[]Crayon: si tu veux comprendre le déroulement d'un algo il te renseigner ailleurs genre wikipedia ou tech.io
b0n5a1: alors pour les faciles...fais d'abord les officiels CG (ça se repère au fait que y'a pas de contributeur indiqué et c'est souvent avec un background graphique spécifique)
Bon[]Crayon: https://www.codingame.com/learn
C4p1741n3: Ouais j'ai vu la diff mdr
C4p1741n3: Jsuis sur learn déjà
C4p1741n3: j'essai de capter le site
b0n5a1: C4p1741n3 : The Descent, Power of Thor, Temperatures, Chuck Norris ( Melan04 tu peux jeter un oeil à ceux la en premier aussi )
C4p1741n3: J'en ai fais 3 déjà
C4p1741n3: D'ailleurs c'est température que j'ai fais sans comprendre comment j'ai réussi
Bon[]Crayon: https://www.codingame.com/training/easy/fax-machine
Bon[]Crayon: très facile
Zorg1: réussir sans comprendre températures ?
b0n5a1: ouais c'est un peu épique, j'avoue :D
C4p1741n3: En gros j'ai fais un truc sans être sur et juste pour m'amuser j'ai appuyé sur test et c'est passé
b0n5a1: heu ... test 1 ?
b0n5a1: :rofl:
TheAvengingTurtle: :D
Bon[]Crayon: et les autres tests ?
C4p1741n3: Comment ca les autres essais ?
b0n5a1: je me suis tellement marré que j'ai réveillé ma chienne :D
C4p1741n3: Tu veux dire les autres tests ?
Bon[]Crayon: en bas à gauche de l'ide il y a un bouton 'tous les test'
Bon[]Crayon: oui
TheAvengingTurtle: C'est ce qu'il a dit.
C4p1741n3: Oui c'est tous les tests qui sont passés mdr
Bon[]Crayon: très bien alors
b0n5a1: et le submit ?
C4p1741n3: Je crois que c'est pck la logique n'était pas basé sur du graphique que j'ai réussi
b0n5a1: ha oui, 100% temperatures sur profil
Bon[]Crayon: le graphique c'est une illustration
C4p1741n3: Des que c'est trop animé je comprends rien
TheAvengingTurtle: La logique est jamais basée dessus
C4p1741n3: Alors mon cerveau force avec l'image xD
TheAvengingTurtle: Bah masque le et fait sans, juste avec la console.
Bon[]Crayon: code à l'aveugle ça ne se verra pas
Zorg1: quand je vois certains codes ...
TheAvengingTurtle: :see_no_evil:
bzr.joh: Les clash of code on a pas les corrections :/
SefioR13: Tu peux regarder les codes des autres s'ils l'ont partagés
bzr.joh: oui mais ils codent tous en python ^^moi Js
Bon[]Crayon: lit les solutions python, ça te donnera la logique de résolution
Captain_Bonnet: bzr tkt moi je code en c# c'est pas mieux x)
Bon[]Crayon: Depuis le début de l'Infini les bons codent en Python, par vrai Professeur Automaton2000.
Automaton2000: et le seul pseudo court qui passait, c'était avec le point.
Bon[]Crayon: :joy:
Captain_Bonnet: :sweat_smile:
Bon[]Crayon: Remi.Automaton2000
Automaton2000: oui, mais c'est pas clair.
bzr.joh: J'avoue que les gars en Python sont hyper chauds... !
Bon[]Crayon: chonchon python
Bon[]Crayon: chacha java
Bon[]Crayon: cpp c
bzr.joh: Quand tu vois qu'en 1:30 il est à 100% et toi tu mets 9min en JS, ça fout le seum !
Bon[]Crayon: C'est l'habitude de faire des cocs.
Bon[]Crayon: Ne te prends ta la tête avec ça.
bzr.joh: Oui tu dois avoir raison. Ils doivent torcher ça depuis un moment ^^
TheAvengingTurtle: pytorch
BlackLionDev01: quelqu'un a compris ce qu'il faut faire ou bien je suis le seul :sweat_smile:
Captain_Bonnet: ??
TheAvengingTurtle: Déjà t'es pas sur le bon chat. :p
Zorg1: pour quel truc ? le challenge ?
TheAvengingTurtle: Stoi l'truc.
TheAvengingTurtle: n * (n-1) * (n-2) * ... -> Factorielle n + (n-1) + (n-2) + ... -> ?
Remi.: Automaton2000 je te manque ?
Automaton2000: tu as sans doute raison
TheAvengingTurtle: RémiPouin :trumpet:
Remi.: Blaise t'as combien de pseudos ?
TheAvengingTurtle: Chttt!!!
Remi.: Si tu veux pas que ça se sache, change de manière d'écrire ^^ arrête tes "stoi" et tes "Rémi pouin" :P
TheAvengingTurtle: Stoi l'stoi...
3141948: T'as réussi à installer ton win 11?
TheAvengingTurtle: "And he answered, saying, My name is Legion: for we are many."
TheAvengingTurtle: Kikinstal windaube11?
3141948: Ah je croyais
TheAvengingTurtle: Moi?
TheAvengingTurtle: Non
3141948: Pendant ce temps sut world çà cause de simu de 2M de nodes
3141948: Sur
TheAvengingTurtle: Non. Ca palre de MK
3141948: Ah ok
3141948: Bon ce soir je fais un peu de MM, tu as quelle stratégie ?
TheAvengingTurtle: Sur mon vieux code de contest ? Aucune idée... :no_mouth:
3141948: B0nsa1 m'a filé son code de multi sinon enfin le template qui appelle le code
3141948: Ca date de 4 ans déjà mm
TheAvengingTurtle: Ma stratégie ça a l'air d'être de faire le code le plus moche possible.
3141948: Ah faudrait que je fasse des puzzles en C++ pour voir tes codes pour le savoir hehe. Enfin tes codes python sont plutôt lisibles
TheAvengingTurtle: Non mais c'est un vieux truc, c'pour ça...
TheAvengingTurtle: Sur les puzzles y'a quelques solutions que j'ai obfusqué pour le fun. :3
3141948: Ah tiens lesquels pour se marrer
3141948: J'ai fait que 50 puzzles en fait
Zorg1: n + (n-1) + (n-2) + ... -> nombre triangulaire ^^
philRG: n * (n - 1) / 2 ?
Remi.: phil si tu trouves une bonne logique pour MM je suis preneur ^^
Stilgart: ramasser de l'eau, c'est une bonne strat
Remi.: Sans dec ^^ salut Stilgart.
Stilgart: \o
Stilgart: en vrai, je crois que mon bot ne fait pas grand chose de plus que buter du tanker et ramasser de l'eau
Stilgart: et envoyer le doof dans la tronche de l'adversaire avec le score le plus gros
Remi.: C'est déjà ce que je fait. Et quand j'ai de la rage, c'est aussi pour dégommer l'adversaire avec le score le plus gros.
Remi.: Ca m'a amené dans les 600-700ème en bronze.
Stilgart: me souviens plus trop de la rage
Stilgart: mais les flaques d'huile c'est chiant
Remi.: Ensuite j'ai découvert le -1.5vel, je suis aux alentours de 250ème en bronze.
Stilgart: je sais plus ce que le doof sait faire d'autre
Remi.: J'ai pas l'énoncé sous les yeux je suis sur auter chose pour l'instant.
Stilgart: (mais c'est sans doute mieux que la flaque d'huile qui va aussi te géner toi)
Remi.: Il y a la bombe (ce que j'utilise), la flaque d'huile, et le 3ème truc avec la rage j'ai oublié.
Stilgart: je dois utiliser la bombe, du coup
Stilgart: (et le doof en bloqueur le reste du temps)
Remi.: Du coup je fais pareil.
philRG: ah pardon: n + (n-1) + (n-2) + ... -> n * (n + 1) / 2
philRG: Remi bon pour l'instant je commente mon code et je supprime du code inutile
philRG: pour monter silver je crois que mon reaper récolte l'eau et sinon suit de près le destroyer qui va vers les tankers, le doofer envoie de l'huile sur le reaper adverse. Rien de plus
philRG: C'est quand je rajoute des stratégies que ça se complique
philRG: le doof en bloqueur ah pkoa?
philRG: j'ai testé le goudron en béta aussi, enfin ça fait trop de paramètres et faut déjà comprendre ce que fait la grenade déjà
philRG: mon doof envoie de l'huile sur les reapers adverses qui se rapprochent d'une épave et si possible vers ceux le plus éloignés de mon reaper
philRG: en gros mon doof suit les reapers adverses
philRG: mon reaper récolte de l'eau ou suit mon destroyer. Mon destroyer suit les tankers, et mon doof suit les reapers adverses
philRG: pour l'instant pas trouvé mieux
Remi.: Ah ben t'es déjà en ligue argent phil.
Remi.: Alors moi ce que fait mon bot
philRG: ben oui depuis hier ou avant-hier sur IA assez basique (et aussi des classes bien spécialisées et méthodes associées). Mais dès que tu rajoutes des strats ça merde
Remi.: Le reaper va vers l'eau la plus proche
Remi.: Avec l'accélération à fond, ou 0 si je suis sur une flaque
Remi.: Mon destroyer, s'il a assez de rage, envoie une bombe sur le reaper ennemi ayant le meilleur score
Remi.: Sinon, il fonce sur le tanker le plus proche
philRG: ah accélération à fond et un -1.5v quand je me rapproche de la cible pour pas trop dévier
Remi.: Et le doof
Remi.: Faut juste le faire rouler, je le fais rouler vers le reaper de l'adversaire ayant le meilleur score.
philRG: ah oui j'utilise la bombe aussi si j'ai assez de rage mais seulement sur les tankers
Remi.: Oui je mets toujours le -1.5vel sur la position visée, quelle que soit l'accélération.
philRG: je le fais sans tester le score de l'adversaire tiens faudrait essayer
Remi.: Tu choisis comment l'adversaire alors ? tu prends le plus proche ? C'est peut-être ça la soluton pour passer argent.
philRG: mon reaper suit mon destroyer aussi
philRG: au pif le plus proche
Remi.: Dans quel cas ton reaper suit ton destroyer ? S'il n'y a pas d'eau, ou si ton destroyer est plus proche que l'eau ?
philRG: en fait mon destroyer roule pour farmer tes tanks et mon reaper le suit
Remi.: A un moment donné il faut bien que le reaper prenne de l'eau.
philRG: quand y a plus de tank il sert plus trop
philRG: il prend de l'eau juste après que le destroyer touche ou détruise le tank comme il le suit
philRG: le doof fait chier les reapers ennemis
philRG: ils les empêche de farmer de l'eau
philRG: mon destroyer emmerde pas les ennemis, il farme que les tankers
philRG: c'est trop le bordel sinon
Remi.: Donc ton reaper ne vise même pas l'eau obtenue grâce au destroyer ? il se contente de passer dedans en suivant le destroyer, et ça en attrape suffisamment ...
philRG: ben si vu qu'il le suit il est premier
Remi.: Je pense que tu peux améliorer ton algo si tu passes à côté d'une flaque dont les ennemis sont loins.
Remi.: Tu la prends puis tu retourne suivre ton destroyer.
philRG: en fait pas trop non lol mais ça monte silver
Remi.: Ben c'est ça, t'es silver, donc c'est mieux que ce que je fais ^^
philRG: j'ai un peu tâtonné et à l'instinct je suis passé silver sur une ia simple
philRG: j'ai pas écris ma stratégie avant de coder en fait
Remi.: Arrête de dire que t'es passé silver avec une IA simple ... j'ai besoin de me rassurer :D
philRG: j'ai une IA de 30 lignes je crois
Remi.: Mais c'est qu'il aime bien remuer le couteau dans la plaie grrrr ^^
philRG: 200 lignes avec les classes
philRG: 100 lignes pour les classes, 50 lignes la lecture des inputs, et 50 pour l'IA, commentaires et fonctions de debug
philRG: au dessus de 600 lignes, j'arrive plus à me relire
philRG: un petit avantage de python, c'est que quand une idée te vient, tu la testes en 5', et si ton modèle est correctement codé, tu vois rapidement le résultat.
philRG: J'appelle même plus çà du code
Remi.: Ouais c'est vrai que 30 lignes de python ne correspondent pas forcément à 30 lignes de C++
Remi.: Je le vois dans les COC
Remi.: Quand le python résoud le problème en 1 ligne et que moi que je fasse 2 boucles for avec des if à l'intérieur ...
TheAvengingTurtle: Tu peux les mettres sur une ligne.
Remi.: Tiens v'là le troll :P
TheAvengingTurtle: C'pas du troll, c'est toi qui parle de ligne...
philRG: bah je sais pas en combien de lignes tu fais ce code en C++
philRG: http://chat.codingame.com/pastebin/261514fe-f741-4e1a-9442-c68aa99a29bb
TheAvengingTurtle: Une: std::cout<<"404 Not Found\nWhatever you were looking for is not here. Keep looking."<<std::endl;
Remi.: C'est la recherche du closest qui sera moins simple en C++. Mais c'est pas compliqué, c'est juste plus long à écrire.
b0n5a1: re
TheAvengingTurtle: Le lien fonctionne pour toi Remi. ?
Remi.: Oui
Remi.: puisque je lui ai répondu ^^
Remi.: Tu ne rates rien c'est just eun bout de code.
Remi.: Salut bonsai
TheAvengingTurtle: Ah, j'ai. FF en https only.
Remi.: JE suis en train de prendre une leçon de MM auprès de Phil.
philRG: ah ah pendant ce temps, je code pas lol
philRG: ça me rappelle un contest sopra ou sogeti sur le thème CB où Bob m'a un peu montré sa méthodologie
philRG: après le contest, je suis monté gold en peu de temps au multi. Faut être motivé sur les multis en fait
b0n5a1: ça prendrait autnat en C++, sort + sélection du premier élément ^^
Remi.: Pas con le sort, il faut au préalable définir l'opérateur < pour la classe concernée, et coder un calcul de distance.
TheAvengingTurtle: b0n5a1 lance un sort à Remi.
b0n5a1: même pas pour le operator< Remi., un sort avec une lambda comme la ligne de python et ça roule
TheAvengingTurtle: ezpz
Remi.: Les lambas, je connais pas
Remi.: lambda
TheAvengingTurtle: [](){}
b0n5a1: c'est condensé ça :D
Remi.: Pendant longtemps j'ai eu la contrainte de faire du code qui se devait compatible avec les anciennes versions
Remi.: Donc C++98 ou 99 je sais plus
Remi.: Du coup je ne connais que très peu ce qui est apparu après.
b0n5a1: ouch, ha oui ça aide pas
Remi.: Dans la défense, les produits ne sont pas obsolètes au bout de 3 ans ^^
TheAvengingTurtle: std::sort(wrecks.begin(), wrecks.end(), [](Wreck& a, Wreck& b){return a.dist(my_reaper) / a.water < b.dist(my_reaper) / b.water;});
Remi.: Alors que moi j'écrirais : std::sort(wrecks.begin(), wrecks.end()) avec auparavant la définition de l'opérateur < dans la classe Wreck.
b0n5a1: et ça c'est un raccourci ne précisant pas le type de retour, bool étant par défaut Remi.
TheAvengingTurtle: Oui après ça marche aussi. Ca dépend du reste du code
b0n5a1: et (const Wreck& a, const Wreck& b) c'est mieux t'accèdes que en lecture ^^
TheAvengingTurtle: Oui.
Remi.: L'opérateur < permetaussi de mettre des const
Remi.: bool operator<(const Wreck& w) const {...}
b0n5a1: oui, avec un comportement unique
Remi.: Mais cette écriture me paraît mieux, car vous pouvez faire plusierus sort avec plusierus fonctions différentes.
TheAvengingTurtle: Voilà.
Remi.: Alors que moi avec mon operator< c'est toujorus la même fonction.
b0n5a1: oui
Remi.: On a voulu dire la même chose en même temps ^^
Remi.: Bonsoir lemin
3141948: > ça prendrait autnat en C++, sort + sélection du premier élément ^^ Je fais aussi du sort, mais j'aime bien les lambda et les list compréhension qui se rapprochent le plus du sql.
TheAvengingTurtle: Le sikwal.
b0n5a1: remarque ... min_element avec lambda ça se rapproche plus ^^
3141948: Le truc des const wreck& pour l'accès en lecture, çà permet de pas les modifier ok
TheAvengingTurtle: D'abbord tu modélise la base en Mérice, et ensuite tu la construit en sikwal.
TheAvengingTurtle: Le prof et son accent...
Remi.: Je suis nul en bdd
3141948: C'est pas de la bdd c'est de l'algèbre ensembliste
TheAvengingTurtle: Le sikwal ,
TheAvengingTurtle: *?
TheAvengingTurtle: DROP TABLE;
3141948: Je recode les opérateurs sur mes classes aussi, juste pour réduire mon code d'ia et le rendre plus lisible. Mon ia ressemble plus à un roman qu'à un code
TheAvengingTurtle: (╯°□°)╯︵ ┻━┻
Remi.: Et jamais ta table ne retombe à l'endroit à force de la renverser ?
TheAvengingTurtle: Non. J'ai un ramasseur qui la remet bien après chaque utilisation.
dwarfie: Automaton2000 : code moi une tortue que j'entraine la mienne ...
Automaton2000: je veux pas me faire passer
dwarfie: Automaton2000 : t'inquiete , tu passeras pas , t'as pas acces a ce contest :p
Automaton2000: bah ça dépend de ce que tu veux faire une simu ^^
dwarfie: Automaton2000 : tu fais comme tu le sent
Automaton2000: en fait je pense que je vais finir par croire que j'ai pas le temps
dwarfie: branleur
Remi.: (╯°□°)╯︵ TT
Zorg1: les petits boulots de CG : ramasseur de table
Remi.: Bah il en faut ... vu le nombre de fois que les tables sont renversées ici ^^
Zorg1: c'est fini l'escape challenge + personne n'en parle ?
**dwarfie se souvient de la fois ou y'en avait tellement qu'ils les a collé ensemble avant des les reposé :D
Remi.: Je pense que tout ceux qui voulaient le faire l'ont fait.
dwarfie: et meme ceux qui voulaient pas ...
Remi.: Bah ça personne ne les a forcé ^^
Zorg1: bah je voulais pas je l'ai pas fait ^^
Remi.: Moisi je ne veux pas faire un truc je ne le ferai pas.
Remi.: * Moi si
dwarfie: la curiosité de voir le truc buggé et pouvoir rien faire pendant 1h ... trop tentant
Remi.: mdr on n'a vraiment pas les mêmes tentations :D
3141948: Y a plus de merise en école ?
dwarfie: non ... des debiles ont décidé que UML c'etait "vachement trop mieux"
Remi.: Avec le peu de bdd que j'ai faite, non je n'ai pas fait de merise. Mais c'était pas une école spécialisée en info non plus.
dwarfie: dommage ... merise c'est tellement bien
Remi.: UML c'est pour l'orienté objet.
dwarfie: d'ou le "débilesé
3141948: Merise est plus orienté bdd je crois
dwarfie: s/é/"/
dwarfie: merise est pas orienté ... c'est pour faire de la base de donnée
**dwarfie recommande d'ailleurs en passant le trop peu connu AnalyseSI pour faire des bases propres avec du merise
3141948: Ah ok me semblait bien on avait commencé par çà à l'AFPA après une semaine d'algorithmie un peu bidon
3141948: La formatrice était pas mal sur cette méthode, et bonne pédagogie
3141948: Ils étaient équipés en powerAMC et chez moi j'ai utilisé analyseSI çà me revient
dwarfie: les grands esprits se rencontrent :D
Remi.: Alors moi quand mon reaper suit le destroyer, ça donne n'importe quoi ^^
3141948: > les grands esprits se rencontrent :D Hehe
3141948: Il le suit seulement s'il a rien d'autre à faire
3141948: > Il le suit seulement s'il a rien d'autre à faire C'est mon PM Remi
3141948: Tout part de là ,😂
Remi.: Je me demande s'il ne faudrait pas essayer de repérer les épaves dont les autres sont loin, pour ne pas être trop bousculé
Remi.: "PM" ?
3141948: Post mortem, le truc que quand tu le lis, tu as plus envie de démarrer le multi
dwarfie: le truc a ne jamais lire en fait sinon adieu la motivation de trouver par toi meme
Remi.: J'ai pas mal cherché sur MM, avant de croiser avec les idées des autres.
3141948: > le truc a ne jamais lire en fait sinon adieu la motivation de trouver par toi meme On est d'accord
3141948: J'ai ouvert les PM de MM pour voir les algos ou stratégie dans les grandes lignes mais c'est large ce multi donc peu d'intérêt sauf si tu veux travailler un algo donné
3141948: Je suis aussi loin du niveau de certains aussi
3141948: La majorité des PM concernent des bots en gold ou légende pas le truc à faire quand on débute un multi
Stilgart: (re)lire le PM de Bob sur Fantastic Bits
Stilgart: il s'applique à tous les multis et à toutes les ligues sauf les légendes
Remi.: Je viens de m'apercevoir que mon bots a un problème avec le SKILL
3141948: (oui)
Remi.: Quand ma rage est supérieur à 60, le destroyer balance un bombe en sortant SKILL x y
Remi.: Mais il n'y a pas de bombe et ma rage ne descent pas
Remi.: C'est bizarre
Remi.: du coup mon destroyer n'avance plus et SKILL tout le temps, sans effet.
3141948: Remi ah oui le debug hehe pour çà qu'il faut tester moi j'en ai sûrement encore des problèmes
Remi.: Mais je vois bien le SKILL dans la sortie standard, pourquoi ça n'a aucun effet ?
Remi.: 933 2854 300 SKILL -2585 313 -2585 313 300
3141948: Rien que mes range faut que je les vérifie aussi comme je peine à analyser les replays, je me base surtout sur mes montées de ligue
Remi.: C'est p'être pour ça que je ne monte pas dans les ligues malgré la philosophie qui est assez proche de ce que dis Stilgart ou toi (sauf sur le principe de suivre le destroyer).
3141948: Faut que la bombe soit à portée < 2000
Remi.: Ah ben j'ai pas vu ça ! Ca a dû m'échapper ...
Remi.: Ok, c'est pas dans le texte, c'est dans le petit tableau, en tout petit ... GRRRR
3141948: Sinon ton action est transformée en wait par le referee (écrit dans les règles)
3141948: Oui dans le tableau
Remi.: Bon bah on va stocker l'intention de skill et attendre d'avoir une dist2 inférieure à 4000000
Remi.: Merci phil
3141948: Le principe de suivre le destroyer bon c'est par fainéantise comme j'utilise pas le goudron
Zorg1: dans MM ? en plus ce tableau n'était pas là au début c'est orabig qui l'a rajouté ^^ (en fait les infos sont dans le texte mais en bazar)
Remi.: Oui c'est MM
Remi.: Si je passe silver ce soir ce sera grâce à phil pour m'avoir indiqué cette notion de distance ^^
Stilgart: Remi.: la règle de base, c'est que avant la gold, tu n'as pas besoin d'algo sophistiqué
Stilgart: une strat correcte et implantée sans bug, ça suffit
Remi.: Oui mais j'ai jamais vraiment regardé les parties, juste le début pour vérifier que ça tourne, et du coup il n'y a pas assez de rage au début ^^
3141948: La rage est dans les input, penser à la decrementer si tu utilises plus d'un skill par tour
Stilgart: il faut regarder des parties random, jusqu'au bout
Stilgart: et à la fois des victoires et des défaites
3141948: J'étais top 1 en bronze sans utiliser de skill rage
Stilgart: et trouver la première erreur
Stilgart: (les suivantes ne comptent pas)
Remi.: Ben moi je galère dans la masse en utilisant un skiil transformé en wait ^^ je te redis dès que j'ai fini de coder si ça change.
3141948: Ou alors mon doof utilisait son skill mais je vérifiais pas la rage
3141948: J'ai vu qu'en silver que la rage était fournie en entrée 😂
Remi.: lol
Remi.: Je ne suis pas le seul à ne pas tout voir ^^
Remi.: Automaton2000, note bien les phrases qui parlent de jeu au lieu de me sortir des phrases sur le choix de mon pseudo, hein ? ^^
Automaton2000: et il y en a qui ont fait une ia en c++
Stilgart: Automaton2000: c'est plutôt une bonne idée, d'ailleurs
3141948: > Ben moi je galère dans la masse en utilisant un skiil transformé en wait ^^ je te redis dès que j'ai fini de coder si ça change. Ok bon courage y a bcp de règles sur mm on se perd un peu
Automaton2000: mais vu que tu as trouvé le truc pour le faire
Remi.: non mais là je recode pas grand chose, juste la vérification de la distance avant de lancer le skill
Stilgart: fais un design général plus simple, ça supprimera pas mal de bugs
Stilgart: (même si j'avoue que c'est surtout vrai en contest, ça)
3141948: Ah ok oui plus c simple, moins y a de bugs
___Lou__p: Hello, je suis nouvelle sur la plateforme et n'arrive pas à trouver de codingame Angular 2+. Il n'y en a pas ? :(
Stilgart: ça devient un running gag :/
Stilgart: c'est quoi un "codingame Angular 2+" ? et pourquoi y aurait-il une telle chose ?
Stilgart: (et oui, j'ai l'impression qu'on nous demande ça une fois tous les 15j ces derniers temps)
___Lou__p: Je ne sais pas, on m'a dit qu'on me ferait passer "un codingame Angular pour me tester" lors de mon dernier entretien, ça m'a un peu surpris alors j'ai voulu voir ce que ça donnait, mais il n'y a rien ^^
Stilgart: dans ce cas, on te donnera en temps voulu un lien vers la partie "pro" de codingame
Stilgart: mais ça n'a pas grand chose à voir avec ce que tu trouveras ici
___Lou__p: Donc pas moyen de s'entrainer ici ?
Stilgart: (si ce n'est que c'est la même entreprise)
___Lou__p: Merci pour ton aide en tout cas :)
Stilgart: pour Angular, non
Zorg1: faut pas être obtus non plus
Remi.: Tu peux t’entraîner sur l'un des 27 langages dispo, mais angular n'en fait pas partie.
Stilgart: tu peux faire des puzzles en typescript, c'est sans doute ce qu'il y a de plus proche
Remi.: phil je lance l'arène.
Stilgart: (tiens, c'est base sur typescript ça maintenant)
Stilgart: (tiens, en fait 2+ c'est la version XX pour XX > 5)
Stilgart: (ils sont fout chez google)
Zorg1: ah je croyais que ça marchait toujours avec JS
Zorg1: après bon je ne suis pas trop non plus
Stilgart: j'ai bêtement acheté ce qui était écrit sur wikipedia fr
Stilgart: mais j'avais écris Javascript au départ
3141948: > Je ne sais pas, on m'a dit qu'on me ferait passer "un codingame Angular pour me tester" lors de mon dernier entretien, ça m'a un peu surpris alors j'ai voulu voir ce que ça donnait, mais il n'y a rien ^^ Y a peut-être des test codingame angular sur le site dédié aux recruteurs codingame for work, mais pas sur le site normal
Remi.: Bon je suis passé de 256ème à 195ème, toujours en bronze ... doit y avoir une autre connerie quelque part :/
3141948: Ici y a que des puzzles d'algorithmie utilisant des langages, angular n'étant pas classifié comme langage
3141948: > Bon je suis passé de 256ème à 195ème, toujours en bronze ... doit y avoir une autre connerie quelque part :/ Sûrement revoir ton al
3141948: iA de base
3141948: Déjà t'as gagné des places en fixant ce bug. Mais les montées de petite ligues sont plutôt le résultat d'une stratégie simple et utilisation des règles de la ligue
Remi.: J'espérais quand même me rapprocher du boss.
3141948: Suis monté de wood 2 à bronze sans rien changer aussi
3141948: Quand je monte de ligue ou me rapproche du boss, c'est vraiment quand je découvre un multi.
3141948: Faut vraiment être dedans
3141948: Là çà fait 2j que je suis pris à autre chose, faut le faire à tête reposée. Le mieux parfois c'est de tout recoder de zéro
3141948: Aussi c pas mal d'écrire les stratégies en français pour être sûr que ton code suit bien la logique voulue
3141948: On a parfois des surprises
Remi.: Ok mais là le code est très simple, je ne peux pas m'être trompé sur ce que je veux faire, et ça me semble confirmé quand je regarde les combats.
Remi.: Petite question, tu fais comment pour choisir quel tanker ton destroyer doit poursuivre ? tu fais le plus proche ?
Remi.: J'avais remarqué que ça ne marche pas forcément bien, alors je visais le plus proche du centre du jeu
Remi.: Là par curiosité je retente une arène en visant le plus proche demon destroyer, et je dégringole.
Remi.: * de mon
philRG: faudra que je revois exactement ce qui m'a fait monter silver, car j'ai codé pas mal de nouvelles actions depuis qui n'ont rien donné et comme j'ai été pris par d'autres activités, j'ai un peu oublié
philRG: si ça trouve j'ai codé l'inverse de ce que j'ai voulu, et c'était mieux
philRG: attends je regarde
philRG: http://chat.codingame.com/pastebin/f61105df-74ab-4bd6-ad32-937c9e2b602e
philRG: je suis sûrement un peu dyslexique, je confonds min et max, et des fois je code l'inverse de ce que je veux et ça score. L'idée c'est que plus tu testes d'action, plus tu as de chances de scorer
philRG: c un peu l'idée de simuler toutes les actions de jeu sur plusieurs tours mais en python ça rame un peu, donc je "spam submit" :-D
Remi.: Alors je ne suis pas sûr de comprendre le python, mais tu regardes si la distance entre le tanker et le destroyer est entre 2000 et 4000. Si c'est le cas, tu balances un skill sur le tanker le plus proche de ton reaper
Remi.: Ou sinon
philRG: oui et j'évites de viser le centre du tanker
Remi.: ou sinon tu fonces sur le tanker le plus proche de ton destroyer
Remi.: C'est quand même poussé.
Remi.: Pourquoi ne pas viser le centre du tanker ?
Remi.: quand tu skill
philRG: Si la Grenade atterit au centre d'un véhicule, celui ci ne subit aucun effet
Remi.: Je ne comprends pas la distance entre 2000 et 4000, surtout que pour que le skill fonctionne, il faut être à moins de 2000
philRG: par contre je sais même plus quel effet une grenade a sur un tanker
Remi.: Ah ça c'est une info intéressante. Je balance mes bombes au milieu, encore un truc à corriger.
philRG: attends faut que je rentre la chienne
Remi.: Je t'en prie ^^ tu sors les chiens à cette heure ci ? Moi j'évite, ils aboient pour rentrer, la nuit c'est pas terrible..
philRG: ben il a plu une bonne partie de la journée et j'évite de la sortir quand il pleut car je peux pas la rentrer
philRG: ou alors je la sors en laisse dans le jardin
philRG: parfois elle glisse et tombe dans la piscine
Remi.: Allez dernière arène de la soirée, en fonçant sur le tanker le plus proche du centre comme avant, et en visant x+1, y+1 quand je skill.
philRG: j'ai utilisé skill pour destroyer mais le move à mon avis suffisait largement
Remi.: Je sais pas ... je suis juste en move (le skill est pour les reapers adverses) et je peine à monter.
philRG: la grenade fait des dommages dans un rayon de 1000, et peut-être lancée jusqu'à une distance de 2000
BensGear: hello
philRG: donc si ton adversaire est à plus de 3000, ton action ne donnera rien
philRG: j'ai un bug dans mon code, c'est: tankers_in_range: List[Tanker] = [t for t in tankers if 2000 < t.dist(my_destroyer) < 3000]
philRG: et même: tankers_in_range: List[Tanker] = [t for t in tankers if 1000 < t.dist(my_destroyer) < 3000]
philRG: pour ne pas subir l'effet de le grenade
Remi.: Quand je balance une granade sur un adversaire, je ne me soucie pas de la distance avec mon reaper. Peut-être que je devrais aussi corriger ça.
philRG: en gros au début je lance mes grenades dans des zones éloignées de mon reaper
Remi.: Mais bon, ça complexifie, quand j'entend Stilgart dire qu'on passe gold avec un truc simple ... soit je suis débile soit on n'a pas la même notion de simplicité.
Remi.: 237ème. J'étais mieux classé en balançant la bombe pile au centre ^^
philRG: je sépare les tâches (1- mon reaper collecte de l'eau peinard 2- mon destroyer farme des tankers et parfois envoie des grenades sur les ennemis éloignés de mon reaper et mon doofer envoie de l'huile sur des ennemis éloignés de mon reaper) si je résume bien
philRG: Stilgart est peut-être pas trop loin de la vérité
Remi.: Donc c'est moi qui suit débile ^^ je vais tenter d'utiliser de l'huile aussi.
philRG: balancer la bombe au centre ça doit être pour les unités ennemies pas les tankers
Remi.: Ah ok
philRG: faut éviter
philRG: les règles n'indiquent pas qu'on peut utiliser des grenades sur les tankers et à quoi ça sert (à mon avis à rien)
philRG: les grenades c'est pour éloigner les énnemis des zones intéressantes
philRG: les tankers se dirigent vers le centre, faut voir ce que font les grenades sur les tankers déjà (j'ai pas pris le temps de l'analyser dans les replays), l'énoncé ne l'indique pas précisément
philRG: pour moi le but des grenades c'est éloigner les unités ennemies c'est tout
philRG: le goudron rend les tankers indestructibles ok mais pour quel usage? Le goudron sur les unités ennemies me paraît bien
philRG: faut vraiment y aller en douceur sur ce multi
philRG: l'huile normalement ça marche puisque ton doofer n'a que ça à faire!
philRG: le destroyer doit à la fois aller au contact des tankers et éloigner les ennemis avec les grenades
philRG: le reaper collecter de l'eau et utiliser son goudron pour ralentir les unités ennemies
philRG: les collisions ne sont pas élastiques déjà ça simplifie. Tu peux utiliser le doofer pour pour écarter des unités ennemies
Remi.: Bon, le code qui m'a fait passer de 256 à 195 me place maintenant 33àème
Remi.: * 330
philRG: ah bon c'est une ia molle comme dirait leojean
philRG: Les véhicules touchées par une grenade subissent une poussée de 1000 depuis le point d'explosion de la grenade
philRG: à mon avis la grenade sert à rien sur les tankers
philRG: en gros une simulation a de bonnes chances de scorer sur ce multi (ex: algo génétique)
Remi.: Là on tombe au delà de mes compétences.
philRG: en C++ les perfs seraient bonnes, en python j'en doute fort
Remi.: J'essaie de progresser tant que je peux appliquer une logique. L'algo génétique je ne sais pas faire.
philRG: ben l'algo génétique c pas si compliqué, le plus dur c'est de coder toutes les actions de jeu
philRG: enfin pas si dur pour un habitué, moi je suis noob, je connais le principe, j'en ai codé un ou 2 avec des perfs pourries sur un multi
philRG: 400 lignes de codes pour un résultat nul comparé à un -3vel
philRG: car c du python, je simule 500 nodes alors qu'en C++ certains en simuleraient 2 millions
philRG: essaye çà: https://www.codingame.com/blog/
philRG: en terme de logique: https://www.codingame.com/blog/lazy-keep-simple/
Remi.: Les algos compliqués je regarderai plus tard, ce soir j'aimerais bien passer en silver sur MM ... mais je crois que ça va être mort.
philRG: écrit par Bob (qui code en C++) et utilise peu d'algo de recherches (fait plutôt des heuristiques basées sur une logique)
philRG: ah j'ai beaucoup causé comme j'étais dans le canapé (pas trop vu le multi et mon code)
Remi.: Pas de problème, j'aime quand on me cause beaucoup ici, j'apprends plein de choses.
philRG: ah ok bon c'est que beaucoup font des simulations avec des langages compilés. Et sur des entités en mouvements ça fait beaucoup de positions à simuler aussi
philRG: je fais des simus en python mais sur des jeux à tuiles
philRG: ou tu n'as qu'un nombre limité de mouvements
philRG: pour les jeux de voitures avec collisions, j'évite les simulations en python
Remi.: J'aimerais bien savoir faire des simus pour les appliquer à des algos (génétique, MCTS ou minimax), mais ça prend du temps pour se mettre dedans et je n'arrive pas à m'y mettre. Je fais passer la vie de famille avant le jeu, donc j'ai pas trop l'occasion de progresser dans ce domaine.
philRG: sinon en algo génétique, tu vas simuler des mouvements sur des pas angulaires de 5 ou 10° et aussi accélérations de 10 en 10 (enfin faut définir tes intervalles de thrust) en général tu fait thrust 0-100-200-300
philRG: et ton moteur va calculer les collisions
wassim.benamor: Bonsoir, dans clash of code, avec JS on peut dire on ne peut jamais gagner le type "écrire moins de code", surtout devant des joueurs en Python ?
philRG: Remi oui Bob conseille d'éviter les algos génétiques
Remi.: wassim je ne connais pas assez le JS pour te répondre, mais pour gagner en code le plus court faut faire souvent du python ou du ruby.
philRG: le ruby c'est le plus court. Faut aimer la syntaxe quand même ou coder en Ruby au boulot sinon je vois pas l'intérêt de faire du ruby pour gagner des CoC
philRG: mais on peut aimer les langages aussi ceci dit
Remi.: Après, on peut espérer tomber sur des gens qui n'ont pas compris le principe et qui te sortent un code avec un max de tabulation et des noms de variables à rallonge. Moi je sais qu'en C j'arrivais à faire du cide court, mais impossible de gagner contr eun python qui sait ce qu'il fait.
Remi.: * du code court
wassim.benamor: +1 Remi, tout à fait d'accord. Sur le sujet des tabulations, je penses que sur ce type d'exercice, il faut toujours passer par un minify du code avant de submit (supprimer tous les espaces, renommer les variables par des lettres etc ..)
philRG: le python c'est du code court grâce à certaines fonctions développées sur ce langage. Java, c'est verbeux, C++ aussi selon les cas d'utilisation, le C# a fait des progrès sur Java, mais reste verbeux, par contre, le C# n'est pas aussi permissif que d'autres langages dans le sens que le code est destiné à pouvoir être relu par d'autres
philRG: Le C# permet tout de même de débuter dans la programmation informatique de manière sécurisée
Remi.: Wassim c'est obligatoire. Dépêche toi de coder la solution, et quand tous les tests passent il faut prendre tout le temps qu'il te reste pour supprimer tous les caractères qui ne te servent à rien (tabulations, espaces entre opérateurs, noms de variables et de fonctions ... et voir à remanier le code, l'ordre des conditions etc...)
Stilgart: Remi.: nan mais encore une fois, python c'est pourri pour golfer
Stilgart: (sauf sur les CoC fait pour faire gagner python)
Remi.: On parle justemetn de COC
Stilgart: tous les CoC ne sont pas fait pour être torcher par python non plus
Remi.: C'est pas ce que je dis. Je dis juste que je constate que ceux qui gagnent les COC golf utilisent principalement 2 langages : ruby et python.
Stilgart: fais deux constats encore plus évidents alors :
Stilgart: 1. ceux qui ne savent pas coder codent en python
Stilgart: 2. ceux qui font des coc ne savent pas coder
Remi.: C'est pas un troll ça ? ^^
Stilgart: non, c'est objectif
Remi.: On a tous fait du COC pour avancer sur CG. Donc personne ne sait coder :P
Stilgart: python est fait pour ceux qui ne savent et ne veulent pas coder
Stilgart: (il y a donc une certaine logique)
Stilgart: le top100, il a fait du code long long time ago
Stilgart: ça fait bien longtemps qu'on en a eu assez de casser du débutant
Stilgart: et 5k CP, ça se gagne ailleurs
Remi.: Je comprends pas trop ce que tu essaies de me dire. Hors du top 100 on ne sait pas coder ?
philRG: la définition de savoir coder reste assez arbitraire.
Remi.: En fait ce que je ne comprend pas, c'est que j'ai l'impression que Stilgart s'agace (mais peut-être est-ce une mauvaise impression) dès que je dis que les COC golf sont remportés par le python et le ruby (c'est pas la 1ère fois qu'on en parle). Mais c'est pas un jugement de valeur, c'est simplement ce que j'ai constaté.
philRG: avant le codage il y a la conception
Remi.: Ca je suis d'accord, mais sur CG c'est moins vrai ^^
philRG: je vois ce que les CoC peuvent apporter en fait
philRG: pas
Remi.: moi non plus. J'en ai fait histoire de compléter la quest map. Maintenant que c'est fini, je n'envisage pas d'en refaire (sauf peut-être un jour pour gagner le trophée des 500 coc ... mais il faudrait qu'il n'y ait plus rien d'autre pour progresser).
philRG: sur CG c'est moins vrai? Ah mais c'est parce que beaucoup ont déjà étudié la partie conception et réutilise des patrons ou des best practices
philRG: et font du code sur un langage principal depuis très longtemps
philRG: dans mon cas j'ai pas fait de formation en algorithmie à l'école, j'ai fait du C pour mes loisirs quand j'étais étudiant et un peu de scripting au boulot
philRG: j'avoue ne pas pouvoir coder des milliers de ligne de code en un seul jet et maîtriser toutes les stacks techniques et frameworks.
Remi.: Moi à l'école c'était surtout orienté électronique. La programmation était secondaire, mais c'est ce qui m'a le plus plu. Du coup c'est dans ce domaine que j'ai trouvé du boulot, et c'est dans mes 1ères années de boulot que j'ai tout appris (design patterns, cycle en V ...)
philRG: Peu en sont capables ou alors font ça à fond depuis longtemps (et si possible très jeune) sans s'être arrêté
philRG: ok dans les premières années de boulot normal. Au bout de 15-20 ans à écrire (ou en jargon pisser) du code, tu peux te lasser à moins d'être dans une structure qui te le permet
Remi.: Ah mais je ne pisse pas du code, le code c'est 20% du boulot peut-être.
Remi.: enfin c'était
philRG: c'est une expression pour dire que ce métier est parfois dévalorisé par les non amateurs de code
Remi.: depuis que je suis soumis à la sdf, le code c'est 1% du boulot ^^
philRG: sdf?
Remi.: Sûreté de fonctionnement
Remi.: Tu pisse 10 fois plus de doc pour exmpliquer comment tu t'assures de ne pas faire de la merde (si je caricature ;) )
Remi.: Tu passes bien plus de temps à rédiger ton plan de développement, à être 10 fosi plus rigoureux sur l'écriture des spec (sachant que d'autres ont écrit une méthodologie sur comment écrire tel ou tel doc), t'as des relectures à n'en plus finir, par les responsables qualité ou sdf.
Remi.: C'est intéressant au début, mais au bout d'un moment tu trouves ça long.
Remi.: Depuis que j'ai changé de boulot c'est un peu plus light sur la sdf quand même.
Remi.: A la base je me suis inscrit sur CG parce que ça me manquait de faire du code.
Remi.: Bon du coup maintenant c'est moi qui cause trop et qui n'avance plus sur mon bot ^^
Remi.: T'es toujours là philRG ?
Stilgart: ce que j'essaie de te dire, c'est que si tu veux gagner en golf, c'est surement pas en python qu'il faut coder
philRG: ouais j'essaye de corriger mon bot pourri de silver enfin les lignes de codes qui sont indentés en dehors de mon if / else
philRG: je crois que je sais pas écrire un if/then/else en fait
Remi.: Stilgart là je veux bien te croire.
Remi.: Tu conseilles quoi comme langage ?
philRG: non mais je veux éviter de veiller et causer me force à corriger mon bot
Stilgart: bash / perl / ruby
Remi.: bash faut vraiment maîtriser
Stilgart: dans l'absolu, perl doit être un poil meilleur
Stilgart: mais comme c'est imbittable les codes perl...
Remi.: bash je me prend la tête à faire des calculs avec des varaibles (dans la phlosophie du C), et quand je vois la solution de autres, en 1 ligne ils te traitent tout un tas de données ...
Remi.: * variables
philRG: normal que je code de la merde, j'écris même pas en français ce que mon IA est censée faire (j'ai perdu le fil des PM de bob)
Stilgart: Remi.: traiter des flux de données, c'est le but de (ba)sh oui
Stilgart: si seulement windows avait un shell par défaut ne serait-ce que 3 fois moins bien
philRG: bon je vais spam submit dans l'arène puis dodo tant pis
Stilgart: go go go kovi^WphilRG
Remi.: Moi à la base, le bash me sert à traiter des exécutables ou des fichiers
Remi.: bonne nuit phil
philRG: he he bon j'y crois pas trop lol
Remi.: avec le bash j'automatise des tâches chiantes
philRG: dans 5' quand le run aura fini
Remi.: genre cloner un dépôt, lancer la compil, préparer le répertoire de TU/TI, lancer les TU/TI ...
Remi.: Mais résoudre des algos, ça, jamais fait ^^
Stilgart: dans ce cas, tu dois connaitre suffisamment de commandes pour battre le pythoneux moyen
Remi.: Ah ben non
Stilgart: de connaître à réussir, il y a un peu de boulot
Remi.: Je ne gagnerai pas des COC à faire des déplacements de fichiers ^^
Stilgart: |
Stilgart: yapludfichiers
Stilgart: sed/tr pour gérer les entrées (quand ça donne pas direct la sortie)
Remi.: Justement, sed et tr je ne connais pas. J'ai découvert tr en regardant les solutions des autres personnes après avoir résolu un puzzle.
Remi.: Et je suis sur le cul de voir comment ça traite un lot de données sans effort.
philRG: j'ai fait pas mal de awk il y a 20 ans, un peu de sed et de tr aussi
philRG: et du bash aussi mais j'ai peu de souvenir enfin j'arrive à refaire du bash quand même
philRG: bon j'ai du mal à monter en gold
Remi.: Moi je pense avoir perdu mon temsp ce soir sur MM
philRG: ben faut pas causer à des mecs dans leur canapé
Remi.: La soirée avait pourtant bien comencé en passant de 256 à 195, mais là impossible de repasser au dessus des 300
Remi.: Au contraire phil, j'ai perdu mon temps sur MM, mais pas en parlant avec toi.
Stilgart: pro tip: concentre toi sur tes défaites contre le bas de la ligue
Remi.: Je pense avoir appris des trucs grâce à toi.
philRG: faut bien lire les règles aussi et celles sur MM sont complexes, faut vraiment avoir la forme
Remi.: Stilgart, dans un combats tu peux voir le classement des adversaires ? ou t'es obligé de te taper tout le classement ?
Stilgart: je prends le run, et je zape les 10 premieres parties (le first 10)
philRG: ah ok merci alors pas tout perdu, mais je râle souvent sur les énoncés. Sur les multis communautaires de certains, j'arrive à lire le code java du referee
Stilgart: = les 10 tout en bas pour produire ton classement de départ
Remi.: Ah tu parles des premiers combats ?
philRG: C'est vraiment en testant des IA simples et en franchissant les différentes ligues sans me presser que je comprends les règles
Stilgart: oui
Stilgart: c'est quasiment pas possible que ton bot ne fasse que descendre au classement
Stilgart: (à moins d'avoir gagner tout ton first 10 par accident...)
philRG: les énoncés sont souvent rédigées dans l'esprit du créateur. Pour les contests officiels, il y a moins d'effort à faire sur la compréhension des règles je pense
Stilgart: par ailleurs, tu peux check le classement en faisant "send game to IDE"
Remi.: Pourtant, une IA simple c'est ce que j'ai fait. Ca m'a fait passer les ligues de bois. Mais le bronze semble insurmontable.
Stilgart: philRG: je t'invite à en parler avec Magus
Stilgart: ou euler
Stilgart: (les trucs mal huilés, c'est souvent CG qui a imposé ça à la dernière minute contre l'avis de l'auteur)
Remi.: Stilgart donc si j'ai bien compris, je zappe les 10 premiers combats, et je regarde les défaites dans les premiers combats suivants ?
Stilgart: voilà
philRG: (possible aussi) j'ai pas assez de recul comme je fais des multis que depuis un an de façon sérieuse
Stilgart: si tu as du mal à monter, c'est que ton bot n'écrase pas le bas de la ligue
Stilgart: et quand c'est le cas, c'est qu'il y a une grosse lacune
Stilgart: surtout à MM où il n'y a pas vraiment de hasard
philRG: faut surtout éviter de rajouter du code sans avoir testé si ta stratégie précédente était payante
philRG: je dis n'importe quoi bon j'attends mon dernier spam submit
Remi.: Comment savoir si la stratégie est payante, quand 2 arène de suite avec le même code te font passer de 600ème à 300ème ? ^^ Si je change un truc et que je suis 450ème, c'est dur de savoir si c'est un peu mieux ou un peu moins bien.
Stilgart: facile, c'est pas payant
Stilgart: sinon tu passerais 50e
philRG: exact
philRG: c une IA molle
Remi.: Ok donc je n'ai rien fais de payant depuis que je suis en bronze
Stilgart: vous êtes en bronze si j'ai bien compris ?
Remi.: Sauf peut-être le -1.5vel,
Remi.: Non, phil est en silver
Remi.: Moi en bronze oui
Stilgart: un truc payant, c'est un truc qui même top bronze minimum
Stilgart: le reste, c'est de la mélasse
Remi.: Ben c'est dûr de se sortir de la mélasse.
Remi.: * dur
Stilgart: (comprendre, des bots trop hétérogènes pour tirer des conclusions claires)
Stilgart: et oui, c'est dur de sortir de la mélasse, c'est pour ça que je l'appelle comme ça
philRG: en général quand je code un truc payant je passe Top 5 dans les ligues wood ou bronze, ensuite suffit de débugger
Stilgart: de mémoire, MK préconisait de baisser pas mal le -3vel
philRG: si en mid league c'est que j'ai pas encore trouvé
Stilgart: donc -1.5vel ça parait pas mal
Remi.: J'ai passé les ligues bois sans trop de soucis
philRG: oui
philRG: -1.5lev paraît bien
Remi.: -1.5vel c'est officiel dans le post mortem
Stilgart: par contre, je sais plus du tout comment il était arrivé à cette conclusion, et nous ne pourrons sans doute plus lui demander :(
philRG: ah ok je l'avais lu ici dans le chat et aussi testé -1lev -1.5 - 2 -2.5 -3
philRG: ben ça doit dépendre du coefficient de frottement
philRG: et du thrust
Stilgart: et peut-etre du fait qu'il faut s'arrêter sur l'eau
Stilgart: (c'est pas un petit détail ça :p )
philRG: bon j'ai gagné 40 places en silver en corrigeant du code mou (sans logique)
philRG: en gardant la même logique qui m'a fait monter silver mais j'utilise mieux la grenade je pense et je vais au contact des tank qui ont plus de 4 en water
Stilgart: il y a combien de gens en silver ?
philRG: 133
philRG: c peu
Stilgart: ok...
Stilgart: parce que 40 places ça paraissait pas terrible...
Stilgart: mais c'est 1/3 de la ligue en fait :D
philRG: ah oui c sûr
Stilgart: de coup, gg
philRG: au lieu de dégommer le destroyer je dégomme les autres, en imaginant qu'ils faisaient des trucs intéressants
philRG: s/les autres/tous les ennemis les plus proches de mon destroyer et le plus éloigné de mon reaper lol
philRG: faudrait que je définisse une vraie stratégie car c'est une IA molle
philRG: c'est un peu flou de dire: en imaginant qu'ils faisaient des trucs intéressants
Stilgart: faudrait essayer de regarder ce que fait le boss silver
philRG: défaut d'analyse
philRG: ah oui exact je l'oublie souvent
Stilgart: je t'avoue que perso, j'ai passé mon contest à coder un moteur le plus efficace possible
Stilgart: donc coté strat, j'ai vraiment pas grand chose
Remi.: Bon ben voilà l'exemple parfait de ce que je disait. J'ai relancé sans rien changer, et je suis dans les 400ème (421ème à 63% des combats)
Remi.: C'est le code qui m'avait amené à 195ème en début de soirée.
philRG: visuellement parlant l'analyse des replays me flingue les yeux
philRG: je code à l'aveugle sur la logique
philRG: coder un moteur çàd?
Remi.: Pour simuler
Stilgart: Remi.: autre pro tip
Stilgart: attends d'être à 100%
Stilgart: et en contest, ajoute 2h
philRG: ah ok sur un algo génétique?
Remi.: Ouais t'as raison, la fin s'est plutôt bien passée et je suis 284ème, toujours plus bas qu'avant.
Stilgart: j'ai plutôt du MC/HC
philRG: HC?
Stilgart: hill climbing
philRG: ah ok jamais fait celui-ci mais tu l'utilises souvent
Stilgart: en gros, je pars de ce que jouerais mon bot bronze/silver, et je pertube aléatoirement pour trouver un meilleur coup
philRG: je vois pas trop comment faire un MC sur ce genre de multi
Stilgart: tu peux voir ça comme un AG sur un seul chromosome et qui ne fait que des modifs de type changement aléatoire
Remi.: Faudra que j'apprenne à faire ça.
Remi.: A commencer sur SR, comme tu me l'avais conseillé.
philRG: ah oui comme le contest sogeti csb j'ai fait çà (mon pod était bien bourré lol)
philRG: darkhorse simulait 2M nodes et moi entre 2 et 4000 lol
Remi.: Bon sur ce, je vais devoir vous laisser.
Remi.: Merci pour nos échanges de ce soir.
Remi.: A bientôt.
philRG: je suis resté 3j sur le contest le temps de monter 3ème et dépasser le petit blaise hehe
philRG: enfin je suis monté 3ème avec le -3v et une ia basique pour gérer l'utilisation des thrust et aussi le moteur de magus pour détecter les collisions
philRG: bon allé moi pareil dodo bn stilgart
**Stilgart va faire semblant de ne pas aller se coucher
philRG: y avait quand même du code (mais j'ai pompé le code python d'un gars qui avait suivi le PM de magus)
philRG: pour le moteur
philRG: bonne nuit hehe