Chat:Fr/2022-02-02
Stilgart: bonjour à tous, et licorne à Automaton2000 la tortue
Automaton2000: mais bon je suis passé en ligue bronze
dwarfie: Automaton2000 : du coup , t'es obligé de nous dire tortue
Automaton2000: vous etes sur le serveur ?
Stilgart: va falloir préparer le boss de ligue gold, au passage
Stilgart: (pour la légende, je suggère la phrase "je suis Beber")
Buk.: Bonjour ! Et salut Automaton2000
Automaton2000: moi je suis sûr que le code de l'auteur
Alshock: Lequel Stilgart ?
Alshock: Et coucou à tous, qui veut voir ma tortue ?
Bon[]Crayon: salut les tortues
Bon[]Crayon: salut le zzbot automaton2000
Automaton2000: ah pas mal ce push
Alshock: joli pdp
Alshock: j'ai voulu le mettre en français mais je crois que même en français on met pas de d
Bon[]Crayon: Qu'est-ce que tu veux dire ?
Alshock: que ta profile pic est cool
Alshock: d'ailleurs Automaton2000 ne tarit pas d'éloges à ton sujet
Automaton2000: on peut le faire en c++
Alshock: il essaye même d'optimiser son débit de louanges, c'est dire
Bon[]Crayon: Vassily Kandinsky Plusieurs cercles :paintbrush:
Alshock: et tu es dedans
darkhorse64: :dart:
Alshock: oh j'me suis choqué moi-même, je viens de bug 10 minutes à cause d'un int * x = malloc(sizeof(bool) * xsize); Juste envie de crever
Alshock: plus jamais de C
Stilgart: sinon
Stilgart: int * x = malloc(sizeof(*x) * xsize);
Alshock: c'est vrai que généralement je fais ça en plus mais là non, parce que pourquoi faire imbuggable quand on peut faire bugger
karmalapuissance: je viens de commencer c'est dur en C ?
Bon[]Crayon: Dans certain cas oui.
Bon[]Crayon: L'apprentissage est plus long.
BCinU: Salut, je suis nouveau et je découvre un peu tout dans codingame...j'aurais voulu savoir s'il y avait un endroit où on pouvait voir des exemples de puzzle avec taille de code réduit...j'en ai juste fait un en C# pour m'amuser, mais je vois des tailles de code bien plus réduite en C# et je ne vois pas comment faire moins...
Bon[]Crayon: Salut, tu peux faire une recherche avec 'tricks and tips code golf csharp'.
GroutchKeu: o/
Bon[]Crayon: \o
Stilgart: le C c'est un des langages généralistes les plus faciles (à ne pas confondre avec casse-pied et verbeux)
Stilgart: BCinU: passe ton chemin
Stilgart: les codes C# très réduits ne sont probablement pas du C# :(
Stilgart: et la partie "code golf" devrait être intégrées à une partie "Free for all" plutôt que d'être placée dans la partie "compete"
BCinU: Pourquoi devrais-je passer mon chemin ?...c'est amusant quand même
Stilgart: je ne dis pas que c'est pas amusant
Stilgart: c'est juste que le classement est complètement unfair
Stilgart: tu dois pouvoir trouver des tips sur google, et peut-être même sur le forum (je ne sais pas s'il y a un thread spécifique au C# mais c'est possible)
GroutchKeu: quand un maitre du ruby te met une féssée en shortest, tu te rends en effet compte que le langage importe pas mal dans ces jeux la !
Salketer: Salut, quelqu'un a fait le challenge de la semaine? Je suis bloqué sur le test 2... Je suis certain que c'est un truc avec l'angle qui est à plus de 90 degrée mais pas certain
Stilgart: c'est pas un cadeau à déboguer celui-là :(
Stilgart: si ça peut t'aigiuiller, je travaille à 0.001 près, et j'ai une fonction addAngle pour additionner des angles tout en garantissant que le résultat reste entre -180° et 180°
Stilgart: (et je stocke l'angle en degré, ce qui est assez inhabituel de ma part pour être mentionné)
Salketer: hah moi c'est pareil, mais puisqu'il faut jouer avec les degrés...
Stilgart: j'ai plus le détail en tête, mais je suppose que ça aide
Salketer: moi c'est ma rotation qui semble ne pas être bonne... le test1 avec une rotation initiale de 0, pas de soucis mais là j'arrive avec de drôle de résultats...
Stilgart: je pense que mon addAngle me protège de dépassements en cas de rotations, justement*
Salketer: oui pour ne pas dépassé 180
Salketer: oui pour ne pas dépasser 180
Salketer: oops désolé pour le double
Stilgart: j'ai suffisamment des gros doigts pour ne pas être en mesure de me moquer ;)
Gmelle: how to do this thing ?
OldJohn: @Stilgart et @Salketer, pourquoi j'ai pas eu ces problèmes ?
Salketer: T'es meilleur que nous...
OldJohn: Ben non, justement !
Salketer: Haha, je ne sais pas. En fait je ne sais même pas si c'est vraiment ca mon souci
OldJohn: Oui, le problème est que l'on n'est pas bien sûr de la réponse... Moi quand c'est passé, j'ai pas chercher à comprendre après !
Salketer: Je pense que mon calcul d' plante avec des angles suppérieurs à 90, j'essaie avec seulement D voir si je suis plus près
Stilgart: OldJohn: ça dépend beaucoup du reste du code
Stilgart: en l'occurrence, j'ai vraiment besoin d'un angle entre -180° et 180° à un moment (je regarde le signe)
OldJohn: En gros, je m'en tire sans racine carrée dans le code, juste une valeur absolue pour le calcul de la distance!
Salketer: là je pense que c'est l'angle le souci, parce que ma réponse semble être la symétrie de ce qui est attendu
Stilgart: on peut sans doute faire sans, mais c'était trop d'effort de refactoring :)
OldJohn: Et pour les angles, j'ai juste besoin de connaître leurs sinus et cosinus
Stilgart: tu calcules la distance à tous les murs ?
OldJohn: Non, je calcule la trajectoire !
Stilgart: ok... bah dans ce calcul là j'ai besoin du "signe" de l'angle
OldJohn: Donc je suis le rayon !
Stilgart: je pourrais sans doute regarder via sin/cos, mais ça rend le truc obscur
OldJohn: @Stilgart c'est moins obscur pour moi de suivre un vecteur direction normalisé
Salketer: obscure? Pas certain que ce soit si obscure que ca...
Stilgart: c'est quand même plus clair de regarder un seul signe pour savoir s'il faut aller à gauche ou à droite, plutôt que de regarder deux valeurs
OldJohn: En plus, on peut s'en tirer en ne calculant que 4 sinus/cosinus
Salketer: pour ma part, j'utilise aussi cos/sin pour mes angles c'est pour ca que je ne comprend pas trop pourquoi ca bug. Par contre, pour trouver la colision je compare 2 segments
Stilgart: OldJohn: j'avance par saut de puce de case en case moi
OldJohn: @Stilgart: idem pour moi
Stilgart: avec juste l'angle (donc pas de vecteur normalisé, parce que ça fait de l'erreur d'arrondi ces mahcins)
Stilgart: déformation professionnelle, je présume :)
OldJohn: @Stilgart : A qui le dis tu ?
**Stilgart vient de recevoir un mail surréaliste
Salketer: et ca change grand chose les erreurs d'arrondi ici?
Stilgart: ça pourrait
Stilgart: mais les jeux de test sont permissifs de mémoire
OldJohn: Je suis d'accord. Le problème ce sont les coins. (J'ai fait 10 ans de logiciels de maillages)
Stilgart: de mémoire, tant qu'il n'y a pas de rotation de caméra avec un angle qui est un multiple impair de 45°, il n'y a pas d'effet de coin et c'est safe
Stilgart: (au sens où un calcul en double va donner la bonne face)
OldJohn: De mémoire des produits vectoriels peuvent donner la bonne face mais c'est pas ce que j'ai fait. Il aurait fallu que je sois au boulot avec les bonnes référence sous le coude!
Stilgart: avec 45°, il n'y a rien à faire même avec du produit vectoriel
Stilgart: parce que tu tombes potentiellement pile sur un coin
Salketer: oh! Interessant... Je cré mon vecteur de vu, je lui impose la rotation recu. Je reprend ce vecteur je lui ajoute la rotation des ray (-30 à 30) et j'obtien un vecteur qui pointe dans la symétrique d'un vecteur que je crée avec une seul rotation en additionnant les angles... Une idée?
Stilgart: un de deux calculs au moins est faux
Stilgart: c'est le moment de demander à maître Automaton2000 comment on fait des tests unitaires :D
Automaton2000: on a quand meme un peu
Salketer: C'est le même, appliqué 2 fois vs une.
rotate(-100) puis rotate(-30) vs rotate(-130)
Stilgart: ha, donc rotate est faux
Salketer: const x2 = Math.cos(a) * x1 + Math.sin(a) * y1;
const y2 = Math.sin(a) * x1 + Math.cos(a) * y1;
- (
**Stilgart tend une matrice de rotation à struct
Stilgart: à Salketer*
OldJohn: Manque un moins... Determinant différent de 1
Stilgart: spoiler, c'est -sin(a) en haut à droite de ladite matrice ;)
OldJohn: C'est mieux pour le determinant de la matrice de transformation
Salketer: ah non!!! merci
Stilgart: en fait, tu peux choisir le sin(a) sur lequel tu mets le - (ça va juste tourner dans l'autre sens)
Stilgart: mais en général, on le met sur celui de x2
OldJohn: Moi, j'ai des cos(a+angle) et des sin(a+angle)
Salketer: bon, j'ai réussi à debug à peu près tout... J'ai juste mon D' qui semble avoir un tout petit souci. Il porte bien son nom
Salketer: je fais un trigo, normalement c'est pas sorcier!
Salketer: Dprime = distance * sin((90-rayAngle)*PI/180) non?
Stilgart: non, parce que sin ça peut te donner un résultat négatif
Stilgart: ce qui est un peu naze pour une distance
Salketer: sachant que rayAngle est entre 0 et 30, je devrais rester bon...
Stilgart: il va de -30 à 30 c'est moi
Salketer: en fait, pour ce calcul j'utilise l'absolu
Stilgart: (cela dit, le sin est positif sur la plage [60°,120°])
Stilgart: c'est peut-être ça l'erreur alors...
Stilgart: ou pas, ton code est équivalent au mien (mais j'ai un abs devant un cos)
Stilgart: peut-être que d est faux, du coup
Salketer: ah oui, voilà on vient peut-être de trouver le souci de la précision...
Yatagan: Moi j'ai tout fait avec des équations de droite
Salketer: Ma distance = mon point de vu VS le point de collision. Hors je me trouve avec { x: 1531.902882013995, y: 1070.2957065773207 }
Puisqu'on les murs suivent toujours les axes, je devrait avoir un des 2 qui est très proche d'un mutliple de 100...
Yatagan: a*xCam + b*yCam + c = 0, une fois que tu as les bons cos et sin dans a, b et c tu te prends plus la tête
Alshock: vous parlez de quel puzzle ?
Alshock: reuh au passage
Salketer: AZCII 3d de la semaine
Stilgart: https://www.codingame.com/ide/puzzle/lets-make-a-cheap-ascii-3d-engine
Salketer: http://chat.codingame.com/pastebin/d187ede5-6fb0-4f0d-ade7-13d3e43fcc1b
Stilgart: je ne l'ai pas du tout calculée comme ça
Stilgart: je préfère la version paramétrique en fonction de t plutôt que la version directe à coup de produits scalaires sortis d'internet
Salketer: je l'ai pris de mes notes mais c'est vrai que je ne la comprend pas au complet
Salketer: mouais, je suis à deux doight mais ca passe pas... C'était mon interpolation après qui foirait. Maintenant mes intersections sont toujours proches de multiples de 100, sauf que j'ai quand même des merdes dans mes hauteurs
Salketer: O.O pourquoi j'ai mis floor à la place de round?! haha c'est bon
Salketer: Bon super, pendant qu'on est dans les maths, je vais attaquer mars!
Stilgart: ML tu le passeras sans doute pas avec des maths
Alshock: C'est ce que bob a fait pourtant
Stilgart: je doute fort que ça soit si simple que ça
Stilgart: 1. on n'a pas les infos exactes en entrée
Stilgart: 2. on n'a pas les détails du moteur
philRG: ah pour les maths, j'essaye de trouver des méthodes de code se rapprochant des maths théoriques
Stilgart: 3. la discrétisation + le nombre d'étapes posent des soucis d'arrondis
Alshock: ah ouais du Rust quoi ?
Alshock: Ou du Haskell j'sais plus j'confonds
Alshock: Haskell, merde répétez pas ça à la mafia locale
Stilgart: 4. la physique à accélération discrète non constante, c'est pas trivial
Stilgart: Automaton2000: fais le truc
Automaton2000: tu veux dire que num va prendre la valeur absolue
philRG: vecteur + matrice de transformation histoire de rester dans un espace vectoriel. Je crois que j'utilise numpy
philRG: au niveau des notations, ce qui se rapproche le plus des maths traditionnelles
Alshock: " 4. la physique à accélération discrète non constante, c'est pas trivial " alors perso j'ai testé en mettant une accélération ponctuelle en début de tour, puis en fin de tour, j'me suis rendu compte que j'étais entre les deux, alors j'ai fait un demi-tour, accélération ponctuelle, fin du tour. C'est très crade mais ça passe
Alshock: Le bidouillage propose des solutions simple aux problèmes qu'on a mal compris
Stilgart: Alshock: si tu fais du tour par tour, tu n'as pas vraiment besoin de physique
Stilgart: juste de la "formule du referee" (cf point 2)
Alshock: Ah, je vois mieux la nuance. Mais justement on fait les exos de sorte à ce que ce soit d'une difficulté acceptable dans le contexte. Tenter de faire une simulation de la physique correspondante avec des accélérations en dehors des possibilités laissées au joueur c'est se prendre la tête sur un puzzle pas prévu pour
Alshock: (je laisse évidemment une place de choix à la possibilité que je comprenne mal les enjeux soulevés)
Stilgart: surtout, d'après mon expérience, ça ne donne rien de très exploitable
Stilgart: dans ML2, et encore plus dans lML3, on ne te demande pas une bête parabole avec accélération linéaire
Stilgart: mais un comportement beaucoup plus complexe qui de toute façon va nécessité son lot de if
Stilgart: à partir de là, la forêt de ifs finit par faire tout le taff
Alshock: je n'ai pas le détail de son implémentation, et je crois qu'il a patché ML3 avec son if et son couteau, mais je crois (si je me souviens bien) que le 2 ne reposait que sur des courbes de Bézier. Probablement à une fonction d'aterrissage près
Alshock: ce que je crois n'est quand même pas très intéressant parce que ça repose sur rien
HenniYassine: bonjour, est-ce qu'il y'aurait par hasard des développeurs basé a Nantes ?
philRG: si je tape mon premier legend sur line racing avec çà, j'ouvre le champagne: malus = 2 if in_border(*new_pos) else 1
philRG: (dit le gars qui retrouve son code vieux de 9 mois)
JeremyRoussy: Bonjour, j'ai une question, si quelqu'un peux m'expliquer pourquoi lorsque je fais la multiplication de 12 345*789 012 ma calculatrice me donne 9 740 353 140 alors que mon programme renvoie 1 150 418 548 ?
Buk.: philRG Pour la montée de ligue sur line racing tu fais la queue comme tout le monde :p
darkhorse64: JeremyRoussy: tu as un overflow. Utilise un int64
philRG: oui c un peu çà :-D
JeremyRoussy: Haaaaaaa merci
philRG: au début, ça fait envie les multis, puis quand un run met plus d'1h à s'exécuter dans l'arène, tu retournes à ta vie courante
Buk.: j'ai lancé le mien a 14h ...
philRG: ah le mien vient de finir, bon ça rime à rien de modifier des params au pif, rank 415 final alors que j'étais top 20 en gold
Cactus35: pourquoi ça se lance après le début du clash ?
Bon[]Crayon: ?
Cactus35: pourquoi ça se lance pas je veux dire
Cactus35: 5 min que le clash a débuté et il se passe rien
Bon[]Crayon: c'est à toi de coder
Stilgart: ça veut dire quoi "rien" ?
Stilgart: (serait-ce le retour d'un vieux bug où l'ide du clash ne s'ouvre pas ?)
Remi.: Parfois faut actualiser la page pour pouvoir faire le clash
Remi.: Salut tout le monde o/
Bon[]Crayon: \o
Bon[]Crayon: Automaton2000 mise à jour
Automaton2000: si tu joues contre des gens qui ont de la chance
Bon[]Crayon: Automaton2000 je perds
Automaton2000: mais c'est quand meme un peu plus de temps
dwarfie: Automaton2000 : plus de temps pour les tortues ?
Automaton2000: je vois que mon code de fantastic bits
dwarfie: Automaton2000 :il marche pas , tu marque dans ton camp
Automaton2000: nous on a un peu de bol
Zbouig: fuckiong baguette frogies
Zorg1: :thinking: