Chat:Fr/2021-04-09
dbdr: jfaixo tu as cassé un truc?
jfaixo: haha oui dbdr, j'ai push ce que j'avais fait en essayant de jouer avec mon eval et jouer avec les 42 paramètres d'entrée, et bon, c'est pas un franc succès
jfaixo: me suis perdu hier, j'avais une roadmap de trucs a ajouter sur mon bot, et au lieu de m'en tenir au plan j'ai tenté de le tweaker, mauvaise idée x)
Alshock: be clever, don't try to be
Zorg1: c'est classique ça le tuning de magic number pour éviter d'implém un truc chiant
Zorg1: j'en suis un grand spécialiste
jfaixo: oui, et là c'était la soirée junkie qui rechute, en mal de "ho et si je fait +100 ici, ca fait quoi ?"
Zorg1: :D
jfaixo: grosse erreur... mais je suis sobre depuis 8h30 maintenant, je vais tenir jusqu'a dimanche je pense
darkhorse64: bonjour jfaixo
jfaixo: salut darkhorse64 ^^
darkhorse64: tu fais partie du club des tweakers anonymes maintenant
jfaixo: mon 1er timeout, ca fait un peu casse mécanique en F1.. https://www.codingame.com/replay/539062688
Alshock: vu le bruit c'est la courroie de transmission qu'a sauté
Alshock: Sinon, on peut parler du truc incroyable que fait Illedan au tour 111 ? xD
jfaixo: Mdr Alshock , le click bait ! (et ca fonctionne, je reclique pour aller voir le tour 111 !)
jdeveil: Salut à tous. Je cherche la liste des challenges en cours sur le site, je ne la trouve pas.
darkhorse64: sa
jdeveil: J'ai croisé récemment des personnes qui avaient mis un lien sur un challenge du style de CSB mais à 4 avec des pods plus rapide. Ca vous parle ?
Alshock: https://www.codingame.com/ide/challenge/sofia-labs-coding-challenge
darkhorse64: son eval lui dit de ralentir l'adversaire alors qu'il est en tête
jdeveil: yep super merci Alshock, comment on retrouve ce lien dans le site ?
Alshock: @darkhorse64 oui il a fait ça plusieurs fois, mais là il lui a tourbilol à la gueule j'ai trouvé ça génial xD
Alshock: no idea, les challenges d'entreprises sont un peu "cachés" par rapport aux contests CG
dbdr: ils sont juste pas listés, AFAIK
darkhorse64: jfaixo: faut faire un ravitaillement au stand; ton pod manque de punch tout d'un coup
jfaixo: mon taux de victoire en 1c1 a baissé oui, faut dire que ca joue quand meme (j'ai quasi juste rollback a mercredi..)
darkhorse64: Pour jouer, ça joue. Quand tu vois que pb4 est 5-10 avec un bot meilleur que celui qui était premier il y a 5 ans.
Bon[]Crayon: Salut
Bon[]Crayon: slt AuomatonNN, Automaton2000
Automaton2000: au fait, il y a plusieurs niveaux
skyyker: je ne sais plus qui parlait de points bonus pour les figures de style
skyyker: oups, j'étais sur des vieux messages
darkhorse64: c'est pour le patinage
nmortfeus: Les gens j'ai une question sur python, qui est assez bon pour me répondre ?
Alshock: ne demande pas si tu peux demander
Alshock: et surtout comment veux-tu que je te dise si je suis assez bon pour répondre à une question que tu n'as pas posée ?
nmortfeus: Question rhétorique, c'était pour voir si il y avait quelqu'un qui programmais en python...
nmortfeus: La question est la suivante :
Alshock: question inutile
nmortfeus: De ton point de vue, ta quel age ?
nmortfeus: Surement en dessous de 16 je présume
Alshock: 26 ans
nmortfeus: Bah voyons
Alshock: pose ta question
Alshock: (la vraie)
Tiouz: Il n'y a pas besoin de connaître python pour répondre à ça, trop facile
nmortfeus: Donc bref, j'ai codé un tchat privée sur python, jai vu qu'on pouvait le run depuis android avec Pydroid sur GooglePlay. Je dois savoir comment fermer le clavier android avec python
nmortfeus: Sans utiliser js avec js2py
Alshock: @Tiouz xD mon âge est donc une information si connue ?
Tiouz: Non mais le mien oui (enfin, pour moi)
nmortfeus: Si quelqu'un pouvait m'aider...
Alshock: ok donc c'est plus une question d'APIs que de python
nmortfeus: Comment ça, je demande juste une commandes python, que ça soit avec kivy ou autre
nmortfeus: Juste une commande pour que quand l'user se connecte le programme ferme son clavier.
Alshock: python c'est un langage de programmation, y a pas une commande python close_android_keyboard
nmortfeus: Ya donc pas de solutions ?
nmortfeus: Obligé d'utiliser js donc ?
Alshock: Comme je t'ai dit je fais pas de dev mobile, donc je ne connais pas tes outils, Google te répondra mieux que moi
nmortfeus: J'ai cherché partout sur tout les modules adaptable sur andoird aucunes réponses
nmortfeus: Même sur stackoverflow :grimacing:
Alshock: Ouais j'imagine que la question SO est de toi
nmortfeus: SO ?
Alshock: StackOverflow
nmortfeus: Oui mon post est closed aussi wtf
Alshock: Même raison que pour ma réponse, tu demandes comment fermer ton keyboard, mais tu ne dis pas avec quoi tu 'las ouvert. J'ai beau pas être dev mobile j'imagine qu'il y a une foultitudes de manières de faire différentes
jfaixo: tu demandes "juste" une commande python qui va tourner dans un interpréteur porté sur une plateforme dont le langage natif est kotlin/java, donc a priori sans pont simple avec les api natives ;) Tu parles de JS, ton UI est une webview ?
nmortfeus: Je l'ai pas ouvert ... Juste une entrée tkinter et je me disais qu'il y avait surement des modules adaptables pour des commandes python
nmortfeus: Non jfaixo, je conais très peu js et j'ai vu qu'il y avait des commandes simple d'utilisation pour fermer ce clavier
nmortfeus: Bon bah go rester sur windows :'(
leojean890: je n'ai utilisé que java (android SDK/NDK) quand j'ai fait de la prog android, j'en connais qui font ça en kotlin aussi mais pas en python :p
Tiouz: Moi j'ai à nouveau besoin d'aide avec mon Timeout qui n'en est pas un. Je fais Search Race avec un algo génétique, j'ai bien fais gaffe à la limite de temps (je limite grave mes itérations, je suis ultra large). Je pense que c'est un segfault quelque part, mais j'ai lancé en local avec gdb et valgrind et aucun souci, même pas de memory leak
Tiouz: Est-ce que vous savez comment je peux debug *encore plus* ?
Tiouz: Sur les tests de CG, le bug n'est même pas déterministe, alors que mon code l'est
darkhorse64: pas d'index out of range ?
VirtualAtom: Hello ,o/ tu peux essayer de sérialiser l'état de ton jeu (sans oublier ta graîne de random) et l'afficher en début de tour (avec un bitstream par exemple). Ainsi, tu peux récupérer en local exactement l'état de ton bot pour essayer de le debug
Zorg1: SR c'était un peu la foire au timeout, je me limite à 35 ms je crois
Tiouz: J'ai un pseudo-random, toujours initialisé pareil
Zorg1: ça arrivait à tenir dans leur limite de temps comme ça, plus j'avais des t/o aléatoire, le referee estimait que mon code prenait trop de temps
Tiouz: Index out of range -> je ne fais que des appels avec .at(i) sur mes arrays et vectors
Tiouz: J'ai une time limit à 25ms pour être large, mais je limite aussi le nombre d'itérations, ce qui est le facteur limitant
Tiouz: Les tours où il plante, c'est à la première itération
darkhorse64: Ca doit rendre ton bot complètement déterministe. Pour index out of range, forcément tu écris des trucs aussi
Tiouz: Ah oui, c++ au passage
dbdr: vu l'enfer que ça semble etre, on s'en doutait ;)
darkhorse64: et tu ne reproduis pas ton bug en local ?
Tiouz: non ça ne reproduit pas en local. J'ai passé 5 min à relancer gdb car le truc est pas déterministe mais ça n'a jamais planté
VirtualAtom: tu dis pas déterministe, mais si tu commences un tour avec exactement le même état, le bot va faire les mêmes opérations sur CG ou en local, non ?
Tiouz: Oui, mais pourtant 1 fois sur 10 sur CG (et je parle sur la même instance) ça plante
Tiouz: Si un test plante, il suffit de le relancer et ça va marcher
VirtualAtom: si tu as des accès mémoires en écriture au mauvais endroit, ça ne m'étonne pas plus que ça
VirtualAtom: (mais pas sur que ça soit ça, il reste aussi le timeout, mais si tu es conservateur sur le temps alloué par tour)
VirtualAtom: (*même si*)
Tiouz: D'où gdb/valgrind, mais ça veut dire que je ne sais pas l'utiliser.
VirtualAtom: on est d'accord que tu as en local un programme qui lance ton bot sur un tour, et c'est ce programme que tu mets dans gdb ?
Tiouz: Mon programme prend les entrées (que j'ai copié-collé depuis CG), et ne regarde même plus les entrées de chaque tour car je simule. Sur CG je les lis quand même pour flush cin
Tiouz: (enfin, je fais cin >> x >> y >> ...; cin.ignore();)
VirtualAtom: mais en faisant ça sur plusieurs tour, ton bot ne fais pas exactement les mêmes opérations par tour, donc t'es pas exactement dans le même état au moment où ça plante sur CG, non ?
Tiouz: Je suis totalement déterministe, donc si
VirtualAtom: si t'as un timer, tu n'es pas déterministe sur plusieurs tour j'ai l'impression
VirtualAtom: à moins que tu t'arrêtes en fonction du nombre d'itération, sans jamais regarder un timer
Tiouz: J'ai enlevé le timer. Je me limite à 100 itérations, ce qui est ultra large
VirtualAtom: ok, t'as raison du coup ^^
VirtualAtom: t'as compilé en local avec le memory sanitizer ?
Tiouz: C'est quoi ça ?
Tiouz: je compile avec seulement -g
Louis.: salut
VirtualAtom: ça instrumente tes accès mémoire pour te dire "là, t'accède à une zone mémoire que t'es pas sensé toucher, cette zone a été allouée par tel ligne de code à tel moment"
VirtualAtom: c'est un peu comme valgrind, mais sous steroid et plus rapide
Bon[]Crayon: o/
darkhorse64: try catch dans CG pour afficher l'erreur ?
VirtualAtom: si c'est une exception, elle serait affichée dans la sortie standard si elle n'est pas catch je crois
Tiouz: le memory sanitizer c'est juste avec clang ?
VirtualAtom: mais ça reste une bonne pratique de faire try/catch autour de la boucle principale pour s'assurer que ça soit correctement affiché, c'est sûr
VirtualAtom: avec gcc, clang et mvsc
VirtualAtom: je l'utilise surtout avec clang cela dit
Tiouz: Je vais chercher l'option de compil pour le memory sanitizer
VirtualAtom: je fais un abus de langage à chaque fois, c'est address sanitizer. C'est la même option sous clang et gcc je crois
Tiouz: J'ai testé, mais quand je run ça ne me dis rien.
VirtualAtom: mince. Tu peux tenter un segfault manuel pour vérifier, au cas où ?
VirtualAtom: (genre un *((int*)0) = 0)
Tiouz: Gros plantage là
VirtualAtom: et t'as bien des infos supplémentaires dans la console quand ça arrive ?
Tiouz: Oui
VirtualAtom: et mince, donc ça va pas t'aider.
Alshock: Pour moi la leçon de cette galère c'est qu'il faut toujours garder un code déterministe. Gloire à la sainte seed
VirtualAtom: donc si on résume, c'est peu probable que ça soit le timeout car tu fais peu de calcul par tour, et en local tu reproduis tous les tours sans planter
VirtualAtom: tu mets pas une seed aléatoire quand tu submit la version finale Alshock ?
Tiouz: Je dois vous laisser, mais merci pour l'aide
VirtualAtom: ,o/
Tiouz: (encore une fois)
Alshock: perso j'ai tendance à oublier de le faire, à par à se protéger du retroengineering c'est pas utile, mais sinon ouais la version finale ça se défend
Alshock: mais même avec une seed aléatoire, c'est déterministe, et au besoin t uaffiches juste ta seed au début et tout est reproductible.
VirtualAtom: j'hésite toujours pour la version finale. Mais j'atteins jamais le haut de légende pour que ça soit important ^^
Tiouz: Mon code n'a même pas d'aléatoire, c'est seed fixée (et un pseudo-random codé à la main)
Alshock: ah, donc l'indétermination vient du nombre de générations ?
Alshock: euh pardon je te laisse filer
Alshock: pas de questions après la sonnerie
Tiouz: fixé aussi, du moins quand je faisais des tests de debug
Tiouz: oui, je vais mourir de fain
Tiouz: ++
Alshock: Alors la prochaine fois faudra qu'on se demande pourquoi ce code est pas déterministe
leojean890: tiens ça passe wood 1 dans chess, et d'un coup ça rigole moins ;)
Neumann: Il se passe quoi si dans une game à 3 joueurs, l'un d'entre eux timeout. Le bot est désactivé ? Il disparait ?
jfaixo: désactivé
jfaixo: cf ma courroie de distribution sur timeout : https://www.codingame.com/replay/539062688
Neumann: Je parlais d'un timeout dans le jeu (100 tours sans passage de CP), mais ça doit faire la même chose
Bon[]Crayon: Oui c'est pareil.
jfaixo: je pense oui
Neumann: Relou Jeff06
dbdr: gg Neumann
Neumann: Non.
El_PaJojo: Bonjour, est il possible de faire un console.log() sans lancer un test ?
El_PaJojo: de faire fonctionner la console sans lancer un test merci
dbdr: ben non
Bon[]Crayon: Automaton2000 :turtle: :)
Automaton2000: il y a une limite de temps à autre
Bon[]Crayon: Automaton2000 yolo
Automaton2000: tu as de la chance de faire des choses
Manah3.deb: salut les gars
Manah3.deb: petit souci dans le coders Strike Back, je fais des if en fonction de la distance du prochain checkpoint pour gérer la puissance mais dans la sortie la puissance reste toujours à 100
Manah3.deb: pourtant la chaque tour, il saisit chaque variable
Zorg1: bah tu dois pas sortir la bonne valeur
Manah3.deb: je change la valeur de thurst et je l'affiche
Manah3.deb: if ((next_checkpoint_dist <= 400) & (next_checkpoint_dist > 200)): http://chat.codingame.com/pastebin/c5b88cc1-059b-4b58-8d66-e8be57f46536
Manah3.deb: voilà comment je gère la puissance mais comment ça se fait qu'il ne rentre pas dans les if ?
Zorg1: et ton print ?
Manah3.deb: print(next_checkpoint_x, next_checkpoint_y, thurst)
Zorg1: ah ça marcherait pas mieux un "and" à la place des "&" ?
Manah3.deb: toujours pareil
Zorg1: comme ça je vois pas, manque d'info
Manah3.deb: while True: http://chat.codingame.com/pastebin/ac529a6e-5fe1-48f7-9106-72c0def0e7d0
Manah3.deb: voilà la boucle entière
dbdr: allez, je me motive pour finir la simu
Zorg1: :thumbsup:
Tiouz: Les gens, je pense que j'ai trouvé mon bug même si je ne suis pas certain. Je pense maintenant que c'est dans la simu que je me plante. J'ai vu qu'à un endroit j'ai la mauvaise vitesse
Tiouz: En revanche ça arrive presque jamais. Est-ce que c'est possible que ce soit une erreur d'arrondi quand je multiplie par 0.85 (qui n'est pas représentable en machine) ?
Tiouz: (toujours sur SR)
BigUP: Tiouz, ca dépend du langage, en python oui tu as toutes les chances d'avoir une erreur d'arrondi
Tiouz: en c++
BigUP: en c++, il faut que tes float soient des double
Tiouz: de base si j'écris 0.85 c'est un float ou un double ?
BigUP: 0.85 je pense que ca n'a pas d'importance
Tiouz: J'ai que des doubles
Tiouz: http://chat.codingame.com/pastebin/fc40c5fe-4e9c-4a42-8d0e-a92f4b17c55f
BigUP: ok, apres, il faut vori ce que fait réellement le moteur. il peut t'afficher une valeur arrondi, mais utiliser la valeur reelle
BigUP: bref, regarde le referee
VirtualAtom: ah, une bonne piste Tiouz ^^. Même en double, je ne tablerais pas sur des résultats identiques pour un code compilé différemment, sur des machines différentes (même pour le même binaire sur la même machine, je me méfierais ^^)
Tiouz: En fait je pense même que ma simu locale n'avais pas le problème car elle n'avais pas le referee pour me dire que je déviais
VirtualAtom: tente peut-être avec des vérifications dans le code, genre check(distance >= 0), etc... où check est une macro qui affiche quelque chose quand le test n'est pas valide
VirtualAtom: en exécutant ça sur CG, t'auras possiblement plus vite le coupable qu'en essayant de reproduire localement
Tiouz: J'ai des fois où ma simu croit que je passe un CP mais en fait je ne le passe pas
Tiouz: En comparant l'état de mon player et l'état renvoyé par CG
Tiouz: Au moins, j'ai un but
Alshock: VirtualAtom D'accord, mais pourquoi ça, ça fait timeout ?
Alshock: pour moi ça devrait "juste" faire faire des bêtise à ton bot
VirtualAtom: faudrait avoir le code sous les yeux pour savoir. Après, c'est peut-être un autre bug, non lié à un crash/timeout
Alshock: oui dsl je voulais tag Tiouz et j'ai buggé mentalement
Tiouz: En fait je pense que ça timeout car je passe des CP que je ne passe pas vraiment, donc j'augmente mon compteur de CP, et quand je dépasse le dernier il fait un segfault
VirtualAtom: on pourrait se débarrasser de l'hypothèse timeout en sortant dans la console d'erreur l'endroit où est le bot dans le code
Alshock: Tiouz On est d'accord que tu parles de passage de CPs dans la simu, quand tu passes les cps dans le vrai jeu tu récupères toutes les données grâce à l'input, n'est-ce pas ?
Tiouz: Oui dans la simu
Tiouz: Mais le truc c'est qu'en local, je ne faisais que la simu, donc je ne voyais pas le problème
Tiouz: Et je croyais (à tort) que ma simu était bonne
Alshock: bah la simu reste cohérente avec elle-même donc normalement si elle diffère du referee elle devrait passer ou non les cps, mais pas incrémenter le compteur sans considérer que tu l'as passé
Alshock: 'fin bref, problème potentiel d'implémentation, mais dans l'absolu ta simu devrait pouvoir buguer sans que ça timeout
Tiouz: Pas si le "timeout" est en fait un segfault non reporté par CG
Alshock: C'est Jean-Jacques Goldman qui t'a dit que ta simu est bonne ?
Tiouz: bonne, bonne bonne
Alshock: devrait pas segfault non plus.
VirtualAtom: CG ne rapporte rien, non ? je l'ai jamais vu me dire ça segfault ici dans ton code
Alshock: je crois que c'est particulier à C++ ce mutisme des enfers
Tiouz: Je ne sais pas en C++. En python il donne l'erreur
VirtualAtom: j'ai prévu un jour (lointain...) de tester si on peut pas récupérer le signal de segfault pour l'afficher proprement dans la console
VirtualAtom: histoire de ne pas avoir à deviner ça
VirtualAtom: quelqu'un a déjà essayé ?
Alshock: ah si bien sûr que tu peux, mais c'est plus chiant que de tourner en local non ?
VirtualAtom: je veux ça seulement pour l'annoter dans la sortie standard, ça sortira mieux quand j'analyse les replays
VirtualAtom: si en plus en début de chaque tour je mets la sérialisation de l'état du bot, ça devient plus facile d'exhumer tous les bugs
Alshock: j'avoue ça se défend
dbdr: hm, le code de Magus il retrouve pas constament la meme collision immediatement?
Magus: c'est à dire ?
dbdr: si les pods se touchent, collisions a t 0. bounce change pas les positions, donc a l'iteration suivante la meme collsion est retrouvee
Alshock: y avait pas une ligne justement pour ignorer les collisions à t 0 ?
dbdr: pas dans le code, il me semble
dbdr: mais c'est mentionné:
dbdr: http://chat.codingame.com/pastebin/26b88607-e81b-4c7f-9bac-641a3285b7ef
Alshock: j'aime bien cette ligne, c'est le mec qui te passe ses réponses au DM de maths avec dans la marge "Au fait, j'ai faux à l'exercice 3, je pense que j'ai foiré un signe"
dbdr: c'est peut-etre aussi pour pas trop macher le travail
dbdr: oh, c'est magique!
Alshock: Bien sûr, j'imagine pas une seconde que Mag soit bloqué par un truc comme ça, et c'est quand même vachement bon pédagogiquement de faire débugger un bout d'une réponse "offerte", ça permet de tester la compréhension
Alshock: class "std::__exception_ptr::exception_ptr" has no member "what"C/C++(135) Mais qu'est-ce que je branle de ma vie moi ? <_<
dbdr: bien sur, loin de moi de sousestimer Magus, c'était juste pour vérifier que j'avais pas raté un truc
dbdr: https://www.codingame.com/replay/539111477
dbdr: le jaune simule l'adversaire, le rouge non :)
Alshock: Enfin, entre nous hein, Mag surcôté. :stuck_out_tongue:
dbdr: :P
Alshock: les vrais font des IAs sous-marines en Haskell
Alshock: Je sais plus, c'était en Haskell que t'avais ton bot qui crashait systématiquement en test avec la diff de flags ?
dbdr: moi? tu confonds avec Rust?
Neumann: Rust ?
Alshock: Ah mais du coup t'avais pas changé de langage pour ça ?
dbdr: moi non
Alshock: Oh moi j'avais gardé un souvenir machiavélique de dbdr dans l'ombre qui avait choisi le langage bugué en IDE pour hide à moindre frais. Tout mon univers s'effondre
dbdr: c'était un heureux hasard
dbdr: j'ai choisi Rust parce que j'aime ça
Neumann: Tu confonds peut-être avec l'alt d'un certain canadien, pendant le fall challenge
dbdr: (qui a dit "masochiste"? ;) )
Alshock: J'étais pas trop là pour le fall, mes souvenirs datent d'OoC/Pacman
Alshock: dbdr yen a bien qui codent en Java
dbdr: genre moi avant rust :D
Tiouz: Yen a bien qui codent en C++ (ah non c'est juste moi qui suis vraiment nul^^)
Alshock: Tiouz non, non, c'est aussi une forme de douleur indicible
Alshock: quelqu'un a déjà eu un usage de current_exception() en C++ ? Parce que le code d'exemple de cppreference dit littéralement "regarde tu gardes le pointeur de l'exception non définie, tu le rethrow, puis tu le catch en std::exception"
Alshock: J'ai du mal à voir le côté plus propre de la démarche
dbdr: ça sent mauvais l'était global, non?
dbdr: https://www.codingame.com/replay/539115940
dbdr: lol la fin
Alshock: l'état global ? Tu veux dire le catch anything ?
Alshock: Ton bot a quand même gardé ce boost par pur sadisme
dbdr: c'est thread local?
dbdr: enfin je pense que je préfere pas savoir ;)
Tiouz: En fait c'est le referee qui ne me passe pas le CP, c'est pas ma faute
Tiouz: Je termine mon tour dans le CP, mais il ne veux pas me le compter
dbdr: le méchant!
Alshock: "If called during exception handling (typically, in a catch clause), captures the current exception object and creates an std::exception_ptr that holds either a copy or a reference to that exception object" c'est censé être lié à l'exception en cours donc ça devrait être local, mais je jurerais rien
dbdr: ça fait un peu magique, quoi, non?
Alshock: bah ça fait surtout "pourquoi diable je voudrais passer par un pointeur sur mon exception ?", ça fait partie de la foultitude de trucs C++ où je me dis "doit y avoir un contexte qui a demandé sa création, mais j'arrive absolument pas à voir lequel"
Alshock: et l'exemple cppref bordel, l'exemple d'utilisation ! Il est magique : https://en.cppreference.com/w/cpp/error/exception_ptr
nicola: Tiouz, c’est parce qu’il est encore en GS.
Tiouz: en GS ?
nicola: Grande section.
nicola: Pouf pouf.
Tiouz: facepalm
nicola: :grin:
Alshock: GrassSlide, c'est un bug connu de trackmania pour drift sans frottement
Tiouz: oui ! les bonnes refs !
Tiouz: Honnêtement je ne vois pas comment corriger le bug. J'ai regardé le referee mais c'est assez obscur car ils calculent le temps exact où je traverse le CP
Tiouz: Enfin, j'ai trouvé un fix assez moche pour que ça marche, mais c'est nul
Alshock: Quel est le problème en vrai ? Y a un moment où toi ta simu dit que tu passes le cp, puis le referee te renvoie que t'as pas passé le cp mais t'es dedans c'est bien ça ?
Tiouz: Oui, j'ai affiché ma position, et la position du CP, et je suis à moins de 600 unités !
Alshock: après arrondi ?
Tiouz: Je récupère l'était que me donne le referee, donc son état
dbdr: tu as quels chiffres exactement?
dbdr: bon voyons ce que çá donne en arene
Tiouz: x,y,cx,cy = 2555, 5944, 1961, 6027
Tiouz: la position (x,y) et la position du cp (cx,cy) donnée par le referee
dbdr: oui, c'est a moins de 00
dbdr: 600
dbdr: :no_mouth:
Tiouz: Sur la discussion Natalka1122 a eu le même problème que mio
Tiouz: moi*
dbdr: c'est quel multi, CSB?
Tiouz: Search Race
dbdr: ok
Tiouz: En fait elle n'avait pas le même problème exactement, je ne sais pas si mon cas s'applique
dbdr: soit tu mélanges les entrées, soit c'est bien le comportement du referee. tu peux le tester en local si tu veux
dbdr: Magus: merci pour le pseudocode CSB! :) y'aurait d'ajouter le contest privé, ou c'est chiant? (je vois qu'il y en a d'anciens)
Neumann: Sur CGStats ?
dbdr: oui
Neumann: http://cgstats.magusgeek.com/app/sofia-labs-coding-challenge/dbdr <http://cgstats.magusgeek.com/app/sofia-labs-coding-challenge/Neumann>
dbdr: ah cool, merci!
dbdr: suffit de creer l'url a la main, c'est ça?
Neumann: Oui
Neumann: "créer l'url" :D
dbdr: que l'URL soit
dbdr: et l'URL fut
Alshock: Tiens je sais même pas ce que veut dire le sigle, Unknown Routing Language ?
Zorg1: Uniform Resource Locator
Zorg1: ou Unique :thinking:
Alshock: GT palwin
Alshock: Uniform selon Google, mais qu'en sait-il finalmeent ?
Zorg1: ah c'est bien Uniform
Zorg1: google sait tout, il sait même quand tu vas mourrir
dbdr: URL Resource Locator
Alshock: GNU is Not Unix
Zorg1: :thumbsup: bravo les gars
dbdr: Zorg1 #2
dbdr: a toi le cours en ligne!
Zorg1: oui enfin t'as la moitié du top qui repush
Zorg1: un cours en ligne ?
dbdr: c'est pas le prix pour le #2?
Bon[]Crayon: Pour apprendre le python !
darkhorse64: non, il aura le sac
Zorg1: Dit le gars qui fait le contest en D
dbdr: çá sent le sketch de fernand reynaud
Zorg1: pourquoi t'es douanier en fait ?
dbdr: non, celui du prix du meilleur conducteur du dimanche
dbdr: - qu'allez vous faire de votre prix? - ben, je pense que je vais aller a l'auto-école, afin d'essayer d'obtenir mon permis de conduite
Zorg1: ah oui le gars qui a volé la bagnole ^^
dbdr: oui, en plus
Zorg1: bon c'est quoi ce délire, je vais finir #1 parce que tout le monde tune ses magics numbers ?
Tiouz: En fait mon bot est trop bon ! Je suis dans le CP après avoir arrondi les entrées, mais pas dedans avant l'arrondi
Tiouz: Et le test se fait avant l'arrondi...
Zorg1: c'est vrai que je considère le CP avec 5 pixels en moins moi
Zorg1: un peu cradingue mais ça marche
dbdr: voila comment on fini #1
dbdr: allez soit gentil, Neumann, resub. pour le screen de Zorg1 ;)
Neumann: Non.
dbdr: pfff
Zorg1: déjà fait mon screen #1 ça va ^^
dbdr: ah gg :D
Zorg1: au fait ça vaut combien une PS5 ?
dbdr: c'est pour un ami? ;)
Zorg1: pour mon édification personnelle
Zorg1: mais bon le prix du jeu moyen ça doit être dans les 60 euros je suppose
dbdr: https://www.codingame.com/replay/539133168 euh...
dbdr: no passaran!
Illedan: :clap: dbdr
Neumann: genius
dbdr: "presque"
Zorg1: t'as choppé de l'ADN de bloqueur qui trainait de CSB ?
Zorg1: fonction d'évaluation teigneuse
Tiouz: C'est pas une stratégie de faire exprès de faire timeout l'adversaire (la règle des 100 tours) ?
Zorg1: à deux c'est faisable
Tiouz: Ah oui, à plus c'est compliqué
Tiouz: Un vrai gardien de but !
dbdr: je le fais souvent, en plus. va falloir que je fix ça
darkhorse64: j'avais aussi ce bug, bloquer alors que j'allais timeouter le premier
Zorg1: c'est vrai que le fait d'avoir aucune contrainte sur la direction de la poussée ça simplifie ce genre de truc
Morkai: Bonjour a tous, je viens de tomber sur un clash nous demandant d'afficher les 3 premier chiffre d'un nombre A exposant B On avait en input A et B sauf que le dernier test ne passait pas car A^B prenant trop de temps a s'exécuter Auriez vous une solution a se problème ?
Tiouz: Tu as essayé en python ?
Morkai: oui
Tiouz: et c'est bien les 3 premiers, donc la réponse n'est pas modulo 1000 ?
Tiouz: genre si a^b = 1234 il faut répondre 123 ?
Morkai: oui c'est ça
nmcodes: paris vous quelqu'un a deja résolu "Shadows of the Knight" ?
Morkai: 1000**1000000 par exemple c'est trop long
Tiouz: p
Tiouz: Mais celui là c'est facile d'avoir les premiers chiffres
Morkai: j'avais fait res = a**b print(str(res)[:3])
Morkai: pas si facile pour moi apparemment :cold_sweat:
Tiouz: Je veux dire, c'est 100 la solution
Tiouz: Si c'était vraiment ça le test/validateur, alors il fallait utiliser la forme de "a"
Tiouz: Sinon je ne pense pas qu'il y ait une formule
Morkai: que veux tu dire pas la forme de "a" ?
Tiouz: Là comme a=1000, str(a**b)[:3] = 100 tout le temps
Morkai: 1<a<1000 1<b<1000000
Tiouz: if (a == 10 and b>1 or a == 100) then 100 else str(a**b)[:3]
Tiouz: C'était quoi les valeurs exactes de a et b pour le test qui plantait ?
Morkai: j'ai pas regarder les valeurs exact mais c'etait de très grande valeur car un simple A**B prenait trop de temps pour s'éxécuter
Morkai: il y avait le message d'erreur disant TimeOut , votre code n'est pas suffisament optimisé
Zorg1: ou alors tu fais le calcul en flottant avec pow() il devrait au moins conserver les 3 premiers chiffres
Zorg1: quoique ça doit déborder
Tiouz: Ça va totalement déborder
Alshock: nmcodes un peu en retard mais si t'as une questin dessus pose la directement, ça évite les redondances. En l'occurrence oui.
kayou: Morkai, tu dois faire le calcul de la puisance toi même et ne conserver a chaque fois que les (n+k) prenier chiffres, (le probleme est de trouver le bon k)
Tiouz: kayou il y a vraiment un k qui marche ?
Zorg1: oui en fait non si tu prend le log10, tu garde la partie fractionnaire et voilà
kayou: il est different en fonction du nombre de digits qu'on te demande
Alshock: +1
Alshock: Out of context Tiouz "Ça va totalement déborder", à mettre sur son épitaphe
Tiouz: :rage:
Zorg1: :D
dbdr: amis du bon gout, coucou!
Alshock: désolé, j'ai été radié de l'ordre du bon goût en 1938
Bon[]Crayon: o/
Zorg1: \o
BlaiseEbuth: Yo tout l'monde ! Automaton2000, AutomatonNN !
Automaton2000: ouais mais là c'est un peu le pb de la semaine ?
Bon[]Crayon: o/
BlaiseEbuth: \o
Zorg1: \o/
dbdr: pb4 #2
dbdr: il était pas #10 avec le meme sub? :D
dbdr: quoique, il est pas si vieux, vu la lenteur
jfaixo: il a push a 15h38 ;)
dbdr: oui
Zorg1: toujours une heure pour un push ?
dbdr: y'a pas d'heure pour un bon push
Zorg1: il y a le mauvais push et le bon push
dbdr: c'est facile, le mauvais push il fait pas #1
Zorg1: on est submergé par une marée de mauvais push ... :scream:
dbdr: https://www.codingame.com/replay/539148596 pb4
dbdr: :joy:
dbdr: c'est pas ça qui va acceler les submits, si tous les matchs font 500 tours...
dbdr: *accelerer
Zorg1: c'est à cause de vous deux que j'attends une heure le résultat de mon push :rage:
dbdr: nous on attend le résultat d'un seul match
Zorg1: c'est mignon votre course
dbdr: m'a bient fait rigoler :D
dbdr: match de défenseurs
Zorg1: oui
Zorg1: ça fini dans 2 jours 6 heures
dbdr: daporan push dans 2 jours 5 heures 50 minutes
Neumann: lel
jft63: c'est sur
nmcodes: hello
Neumann: Il va faire quoi avec deux PS5
Neumann: Faut faire croquer les autres aussi
Neumann: Daporan si tu me lis
Neumann: Sois cool
jft63: Neumann ^^
nmcodes: quelqu'un peut m'aider à optimiser une boucle for qui va de 1jusqu'à 88888888 sans que j'aie une erreur de dépassement de temps ?
dbdr: :joy:
Neumann: C'est très précis comme problème
nmcodes: je cherche à résoudre "Magic count of numbers"
Neumann: Je connais pas le problème mais t'as sans doute pas la bonne approche
dbdr: > We all know Linux is great... it does infinite loops in 5 seconds.
dbdr: 5s ça timeout sur CG :(
nmcodes: voilà
nmcodes: c'est ça l'énoncé :
nmcodes: You should calculate a count of natural numbers not greater than n and divisible at least by one of k given primes.
dbdr: il y a sans doute une astuce mathematique, pas une optim de boucle
nmcodes: d'accord merci. je vais voir ça
Zorg1: vu l'espèce de pénurie sur les PS5 ça doit bien se vendre
dbdr: ctoi l'espece de pénurie
Thyl: Zorg1 t'es remonté fort
Neumann: Vue l'espèce de pénurie, tu vas surtout jamais la recevoir
Zorg1: ^^
Zorg1: thyl : bah je sais pas trop j'ai l'impression que tout le top repush, je garde les places au chaud en attendant
Thyl: mais après est-ce que la ps5 est livré avec des jeux
Thyl: parce que il te l'offre
Thyl: et après c'est toi qui racque
dbdr: CSB pour PS5
Zorg1: "Special MK edition, vu à la télé"
BlaiseEbuth: T'façon à choisir vaut mieux une xbox niveau jeux...
Zorg1: avec 10 autocollants "fix ton bot"
Thyl: BlaiseEbuth la xbox c'est grave bien
Thyl: juste Forza ça claque
Zorg1: aucune idée je ne joue que sur PC moi
BlaiseEbuth: Moi je joue que sur PC. Mais je dis juste qu'entre xbox et ps je prends xbox
Thyl: PC c'est que MTGA moi
Thyl: j'ai jamais testé les RPG
dbdr: finis #1 et on en reparle
Zorg1: bah c'est lequel qui prend moins la poussière ?
Zorg1: MTGA ?
Thyl: magic the gathering arena
BlaiseEbuth: <3
Zorg1: ah un jeu de carte (oui je sais je simplifie ^^)
Thyl: un gouffre à fric
Thyl: non mais en vrai c'est vachement bien
Thyl: l'ambiance dans les tournois en boutique est merveilleuse
Zorg1: bah si tu veux que ça rapporte ... t'attires pas les mouches avec du vinaigre comme on dit
Thyl: ça rapporte pas
Thyl: ça te prend
Thyl: le booster 3,50 euros ça pique
Zorg1: ah je croyais que c'était lardé de micro transaction et autre pompe à fric
dbdr: ça rapporte, juste pas a toi
Thyl: le jeu sur PC tu peux rien payé
Zorg1: bah oui au proprio de la boutique, c'est le principe ^^
BlaiseEbuth: De mon temps... Bah c'était pareil, juste avec de vrais cartes...
Thyl: après solid works masi je crois pas que c'est un jeu ^^
Thyl: qui fait les Binary contest ?
BlaiseEbuth: L'avantage de mtga c'est que tu peux trouver des partenaires de jeux facilement...
BlaiseEbuth: Sans te trainer à une convention
BlaiseEbuth: Ca flatte l'antisocial que je suis
BlaiseEbuth: Binary contest ?
Thyl: C'est pour ça que t'es parti de Discord ! :)
BlaiseEbuth: Non.
Thyl: je vous envoi un lien
BlaiseEbuth: Juste parce que ça me prenais trop de temps
Zorg1: Bah au dernier crash du serveur de chat je t'ai vu sur discord
BlaiseEbuth: M'fin j'ai recréé un compte pour aller gueuler quand le chat était down.
BlaiseEbuth: Voilà
Thyl: https://binarysearch.com/room/Weekly-Contest-54-lcf4Qws6iH
Zorg1: ah y a un site "binary search" je vais vite dépose bfs.com et dfs.com avant qu'on me l'es pique
Thyl: pense a*
Thyl: et backtrack
Zorg1: ah dfs.com c'est la samaritaine :thinking:
BlaiseEbuth: Wa c'est du chrono
Thyl: un mega clash of code
BlaiseEbuth: erf
BlaiseEbuth: En plus c'est à l'heure de l'apéro
Zorg1: c'est interdit les apéros publiques, à moins que tu sois préfet ou ministre
BlaiseEbuth: Qui a dit que c'était publique ?
BlaiseEbuth: Je me bourre juste la gueulle tout seul.
Zorg1: enfin disons à plus de 6 personnes ;-)
Thyl: à tiens ç donne envie de chips tout ça
Zorg1: ah ok si c'est pour ta consommation personnelle ...
Zorg1: ON VA MANGER DES CHIPS THYL !
Zorg1: TU FAIS LA GUEULE OU QUOI ?
Zorg1: #desole
Bon[]Crayon: Automaton2000 quoi de neuf ,
Automaton2000: je me fais chier à faire les puzzles easy
Bon[]Crayon: Automaton2000 ah ah :joy:
Automaton2000: am i not merciful ?
BlaiseEbuth: :scream:
Zorg1: y a trop de gens qui parlent anglais ici j'ai l'impression, y a Automaton2000 qui dit n'importe quoi
Automaton2000: bon après c'est pas la solution la plus courte
Zorg1: mais est ce la meilleure Automaton2000 ?
Automaton2000: je connais le referee par coeur
BlaiseEbuth: C'est galdiator
Zorg1: le frère galeux de radiator ?
Zorg1: l'un est galeux l'autre est irradié
Zorg1: bon j'arrête je fix mon bot pour récupérer la PS5
Thyl: je vasi faire du bit boarding sur clobber
Thyl: Zorg1 t'est bien sur un AG ?
Zorg1: moi oui je l'ai jamais caché en fait
Zorg1: après je t'avouerais que SR a été très bien pour moi, c'est vraiment là que j'ai pu comprendre les problèmes de mon AG CSB
Zorg1: bon je crois que j'ai pas mal bossé sur SR en fait
Zorg1: actuellement mon éval est franchement simpliste
Thyl: Une fois j'ai essayé un turc qui marchait pas mal
Thyl: je prenais des solutions
Thyl: genre 100
Thyl: et je les faisais jouée contre les 99 autres
Thyl: sur Troll vs Castle
Thyl: c'était plutot cool
ChtiZorro: tu essayes des turcs ?
ChtiZorro: tu vas avoir des soucis avec Erdogan
ChtiZorro: mais bon, c'est vous qui voyez
Zorg1: fun fact : les initiales d'Atatürk sont MK
leojean890: pusher un truc pourri dans tryangle => checked :p
1Alex: ou peut-on trouver le puzzle de la semaine ?
1Alex: j'ai trouve le lien depuis la carte des missions : https://www.codingame.com/puzzles/puzzle-of-the-week
1Alex: mais j'ai pas reussi a le trouver en naviguant dans les menus
Zorg1: c'est généralement à partir de la carte des missions que je le trouve moi aussi
dbdr: https://www.potw.cg
dbdr: Citizens of the Republic of the Congo are entitled to one free domain registration, directly at the second level of .cg. Additional registrations, and registrations by foreigners, have a cost of €225/year
dbdr: il est temps de demander la nationalité
Zorg1: après t'as des pays qu'on monétisé leur domain, comme tuvalu (.tv)
dbdr: .io aussi
dbdr: oula jft63
dbdr: cette fusée
Zorg1: ah oui joli
dbdr: http://cgstats.magusgeek.com/app/sofia-labs-coding-challenge/jft63
jft63: dbdr finalement pas tant que ça
jfaixo: ca va quand même ;)
Zorg1: bon jfaixo qu'est ce que tu fous, je croyez que ton but c'était d'être devant Neumann dans ce contest
Neumann: Non.
jfaixo: haha j'y travaille :sweat_smile:
jfaixo: lais je t'avouerai que je suis en train de lacher mentalement, bientot la pause... :P
Jeff06: w00t screenshot
Neumann: Stonks
Neumann: Par contre cassez-vous, j'étais bien tout seul
Neumann: Merci.
Jeff06: pourquoi ya personne d'autre qui timeout?
Jeff06: t'inquetes pas je redescend vite fait
Zorg1: "j'étais juste monté en haut pour le selfie"
jfaixo: pff bon allez pause, ca me semble sans issue xD
Jeff06: on parie sur le top 3?
Jeff06: final?
BlaiseEbuth: Bah moi en premier déjà.
BlaiseEbuth: Et après daporan
BlaiseEbuth: Pis en troisième... :thinking:
Neumann: Ca bouge pas mal, je m'absente 1 heure, j'ai gagné 2 places
ThomasNicoullaud: où on peut trouver le lien ?
jfaixo: ? bah t'es 1er depuis un bout de temps Neumann quand même ;)
darkhorse64: https://www.codingame.com/ide/challenge/sofia-labs-coding-challenge
ThomasNicoullaud: ty darkhorse64
darkhorse64: échange lien contre éval pas trop pourrie
ThomasNicoullaud: -3v
darkhorse64: :disappointed:
ThomasNicoullaud: j'ai pas mieux xD
darkhorse64: y a mieux comme coeff
ThomasNicoullaud: c'est quoi la diff avec le multi ?
darkhorse64: parce que les pods ne driftent pas pareil
ThomasNicoullaud: juste ça ?
darkhorse64: pas de limite sur la rotation, plusieurs boosts, 1 pod, 2-3 joueurs
darkhorse64: avec une bonne heuristique (2 lignes), tu dois pouvoir faire dans le top 30
darkhorse64: bonne nuit les forçats
jfaixo: haha faudra que je passe du temps sur le timeout 1c1 de jeff demain ^^'
Morkai: Bonsoir, j'ai une liste [2, 3, 4, 5] je dois dire true si les chiffre se suivent ou false si ils ne se suivent pas, je suis en python je vois pas comment faire, auriez vous une idée svp ?
Tiouz: Tu parcours, et tu vérifie que chacun est plus petit que le suivant ?
Morkai: j'ai essayé mais j'ai un out of range
SefioR13: Quand tu parcours ta boucle fait attention aux indices de ta liste
SefioR13: ta liste
Jeff06: jfaixo il serait temps ;) petit replay pour le fun: https://www.codingame.com/replay/539007864
SefioR13: Est-ce que c'est possible de savoir ce que test le dernier validateur du problème breaking apart parce que je valide tous les tests mais j'ai pas 100% à la soumission
Zorg1: la victoire au timeout ...
BlaiseEbuth: Comment est ta nuit
Neumann: Bonne.
BlaiseEbuth: Farpait
jfaixo: haaaaa je viens de trouver une couille dans ma fonction d'éval, allez, l'espoire fait vivre
BlaiseEbuth: Vas te coucher
jfaixo: oui, je vais faire ca et corriger demain matin :P
BlaiseEbuth: C'est comme ça qu'on élimine la concurrence.