Chat:Fr/2020-06-10

From CG community
Jump to navigation Jump to search

FreexXx: Plip

Zorg1: o/ à tous et aux bots Automaton2000 & AutomatonNN

Automaton2000: mais je ne suis plus sur

AutomatonNN: on connait le chat avec les problemes de ce que tu veux dire :)

FreexXx: salut Zorg1 :p

Zorg1: salut FreexXx ;-)

FreexXx: je t'ai mis en cible sur platinium rift 2 ^^

Zorg1: j'ai pas le meilleur bot, et je ne travaille pas vraiment dessus

FreexXx: c'est quoi le nom de l'algo pour avoir un pathfinding sur ce multi j'oubli tout le temps

Zorg1: BFS ?

FreexXx: c'est en rapport avec la recherche dans un graph

FreexXx: ha oui c'est ça merci

257832: Yo tout l'monde ! Automaton2000, AutomatonNN !

Automaton2000: mais ca me fait perdre du temps pour que le classement de la ligue légende

AutomatonNN: Bonjour les gens et Automaton2000

Zorg1: \o

FreexXx: je crois que j'ai reussi a faire le pire bfs de l'histoire xD

VirtualAtom: Salut tout le monde, et nos chers Automaton2000 et AutomatonNN

Automaton2000: ca doit pas etre le cas

AutomatonNN: enfin sur le chat en fait je suis pas sur que c'est pas trop compliqué de faire un truc pour le pass

VirtualAtom: FreexXx, comment ça le pire ? ^^

FreexXx: sur wikipedia il tient en tres peu de ligne moi le mien environ 65 lignes et vraiment pas optimiser ... je pense pas qu'on puisse faire pire :p

FreexXx: c'est a cause du fait qu'il me faut retrouver la premiere zone une fois que j'ai trouvé le plus court chemein du coup j'ai pas du faire comme il faut :'(

FreexXx: http://chat.codingame.com/pastebin/94df3859-d1b1-45eb-9598-5f95666bd93e

FreexXx: bon je recommence depuis le debut ^^

VirtualAtom: j'ai pas encore bien compris pourquoi tu as une première boucle sur dirPossible

BlaiseEbuth: idem

FreexXx: pour garder en memoire les seuls zones ou je peux vraiment aller

VirtualAtom: si tu veux à tout prix retrouver quelle direction initiale tu as pris, tu peux l'encoder dans les noeuds de ton graphs

BlaiseEbuth: VirtualAtom est plutôt pratique comme chatbot, il écrit ce que je pense automatiquement...

VirtualAtom: je n'existe que pour vous servir, maître BlaiseEbuth

BlaiseEbuth: :grin:

BlaiseEbuth: Ah ouai, je vois ce que t'as voulu faire.

FreexXx: non mais tout est faux je n'ai au final meme pas le plus court chemin ^^

BlaiseEbuth: En fait t'es dans l'idée de run un bfs pour chaque direction possible à partir de ta position actuelle, avec une histoire de score à maximiser, mais ça sert à rien.

VirtualAtom: t'as aussi une typo je pense :

                   scoreMin = deph;
                   if(deph < scoreMin) {
                       scoreMin = deph;

BlaiseEbuth: ouai ^^

FreexXx: :'(

BlaiseEbuth: FreexXx: L'idée du bfs c'est d'arriver le plus rapidement à dest depuis start. Donc à chaque tour tu enqueu toutes les destinations possibles à partir de act. Et tu arrêtes quand act est == à dest. Ca c'est le bfs. Pour trouver le plus court chemin, il faut que pour chaque case visitée tu stockes depuis quelle case tu y es arrivé. Comme ça quand le bfs est fini, tu peux remonter à start+1 pour trouver la bonne direction.

FreexXx: https://www.codingame.com/share-replay/472028749 ici au 1er tour avec une seule direction possible au lieu de trouver 15 je trouve 2405 :p j'aimerai bien visualiser la route qu'il choisit haha

FreexXx: ha je pense peut etre avoir compris je vais retenter merci blaise

Bon[]Crayon: sur la page de présentation du puzzle the labyrinth, il y a lien vers un blog qui explique le principe

FreexXx: celui la ? https://www.codingame.com/learn/BFS

Bon[]Crayon: je pensais à celui là https://www.redblobgames.com/pathfinding/a-star/introduction.html

FreexXx: ha oui merci avec tout cela je devrai reussir

Bon[]Crayon: Bonne Lecture

FreexXx: haha cool ça fonctionne :)

FreexXx: juste a ajouter early exit et ça devrait etre bon

FreexXx: c'est quand meme plus jolie :p

FreexXx: http://chat.codingame.com/pastebin/6d3beff1-a80b-4d62-bc5d-e78695acf77d

VirtualAtom: effectivement, ça me semble mieux ^^

FreexXx: oui :innocent: merci pour votre aide !!!

Magus: marrante cette fonction : dropDatabase(are: boolean, you: boolean, sure: boolean)

leojean890: vaut mieux confirmer 3 fois qu'une vu la criticité hehe

dbdr: Magus: pour aller plus loin: dropDatabase(are: boolean, you: boolean, sure: boolean, any_regrets: boolean, dont_do_it: boolean, really: boolean)

dbdr: faut trouver la bonne combinaison de trues et falses

Default avatar.png JBM: comme rm --no-preserve-root

dbdr: que des false c'est trop facile

Default avatar.png JBM: ou l'option du client mysql

dbdr: après ça se brute force ;)

dbdr: for are in [false, true] {

 for you in [false, true] { ...
   drop(are, you, ...)

Default avatar.png JBM: heureusement que t'etais la pour apprendre a Magus le bruteforce

dbdr: HTH

Default avatar.png JBM: ah voila

Default avatar.png JBM: mysql --i-am-a-dummy

Default avatar.png JBM: c'est bien, j'ai ecrit mon premier JUnit

Default avatar.png JBM: mais il faile :'(

dbdr: en TDD c'est une bonne chose

Default avatar.png JBM: ah, sinon

Default avatar.png JBM: j'ai un warning de conversion de type de tableau

Default avatar.png JBM: comment je fix ca?

dbdr: ça sent la limitation du système de type. covariance?

dbdr: c'est quoi le warning

Default avatar.png JBM: [WARNING] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[44,35] unchecked cast

 required: V[]
 found:    java.lang.Object[]

Default avatar.png JBM: V[] a = (V[]) list.toArray();

Default avatar.png JBM: (List<V> list pour la decl)

Magus: t'as 2 solutions

Default avatar.png JBM: 1) arreter avec java, ca suffit la deconne

Default avatar.png JBM: et 2)?

dbdr: PR sur OpenJDK

dbdr: pour améliorer le systeme de types

Default avatar.png JBM: ah pas con

Default avatar.png JBM: non mais ca c'est connu depuis le debut et WONTFIX

Neumann: 1) Apprendre à coder en Java

Magus: soit tu entoures avec un if et un instanceof, je me souviens plus trop mais ça doit donner ça : http://chat.codingame.com/pastebin/eb37ab65-a0d3-4d13-a0a4-44cfddd5f229

Default avatar.png JBM: alors c'est marrant que tu parles de ca

Magus: 2) tu rajoutes une annotation @unchecked :D

Default avatar.png JBM: parce que sur la ligne d'apres j'ai ca if (v instanceof List) dumpList(p, null, (List) v);

Default avatar.png JBM: qui me fait un warning aussi

Magus: mais ouai j'ai jamais compris pourquoi en java quand t'as une List<V> le toArray renvoie un Object[]

Magus: enfin c'est peut être historique mais bon

Default avatar.png JBM: c'est pas historique

Default avatar.png JBM: les generics c'est (relativement) recent en java

dbdr: en Java les tableaux sont covariants

Default avatar.png JBM: oui c'est plutot ca

dbdr: les types generiques non

Default avatar.png JBM: et ca fout la merde depuis le debut

Default avatar.png JBM: pour les tableaux covariants

Alshock: covariant ça veut dire qu'il peut pas être templaté (quelle magnifique terme), je nage dans la semoule chez moi covariant ça se dit de deux variables

Default avatar.png JBM: j'aime bien ton raccourci hatif

Alshock: toujours là pour ça, ça devrait être la description de ma bio ça xD

Default avatar.png JBM: covariant ca se dit d'une transformation sur les types pour laquelle tu as le droit de substituer une specialisation ("subclass" je crois en java)

dbdr: concretement, tu peux passer un String[] à une fonction qui attend un Object[]

dbdr: le probleme c'est que si la fonction écrit un Integer dans le tableau, ...

dbdr: boom!

BlaiseEbuth: Un variant c'est une espèce de gros léziard, et quand y'en a plusieurs on parle de covariants.

Alshock: les fameux variants de Modo, qui après des siècles de prolifération sont devenus les covariants de Komodo

Default avatar.png JBM: ah merci dbdr pour le remplacement au pied leve

Default avatar.png JBM: je suis tombe dans un meeting impromptu

dbdr: moche

Default avatar.png JBM: bon, ma bidouille a la metaclasse marche vraiment pas

Default avatar.png JBM: comment j'instancie une sous-classe depuis une methode statique de la classe parente?

Default avatar.png JBM: c'est possible sans parametrer?

Default avatar.png JBM: SO dit non :(

dbdr: tu veux dire inner class?

Default avatar.png JBM: non, pas la

dbdr: alors je comprends pas la question

dbdr: new?

Default avatar.png JBM: j'ai un main statique la classe parente

dbdr: new SubClass()

Default avatar.png JBM: je voudrais lui faire construire (idealement) acceder (sinon) la sous-classe

Default avatar.png JBM: oui, mais sans avoir son nom

Default avatar.png JBM: sinon c'est pas generique

Default avatar.png JBM: disons qu'il "est" du type de la sous-classe

dbdr: tu veux construire une classe sans savoir laquelle

Default avatar.png JBM: mais que le code du main est herite

Default avatar.png JBM: oui

Default avatar.png JBM: oui l'appeler

Default avatar.png JBM: c'est pas plus delirant que ca, ca marche bien pour les methodes

dbdr: main?

Default avatar.png JBM: public static void main

Default avatar.png JBM: c'est pas plus ou moins ce qui est fait avec Runnable?

Default avatar.png JBM: [souvenirs de >20 ans]

dbdr: une methode statique, c'est juste une fonction qui par coincidence est dans une classe

Default avatar.png JBM: on est d'accord

Default avatar.png JBM: mais c'est pas interdit de l'appeler sur une classe fille

dbdr: elle sait rien des instances, sous-classes etc

Default avatar.png JBM: c'est public, c'est herite

dbdr: c'est juste du sucre

Default avatar.png JBM: il est pas absurde qu'elle sache son type

dbdr: ya pas d'instance

Default avatar.png JBM: y'a pas d'instance

Default avatar.png JBM: mais y'a une classe

dbdr: donc tu peux pas faire du virtuel avec, ya pas d'instance

Default avatar.png JBM: ca ca sonne mieux comme argument deja

dbdr: en fait ya pas de classes non plus, sauf syntactiquement

dbdr: c'est pour ça que je trouve ça magique quand j'appelle des fonctions sans arguments sur des parametres de types en Rust

dbdr: Java peut pas du tout faire ça

dbdr: (sauf à faire à la main, avec de la reflexion)

Default avatar.png JBM: donc ma seul choix finalement, c'est de definir un main dans chaque sous-classe qui instancie et appelle le main parent

dbdr: si j'ai bien compris, oui

Default avatar.png JBM: beurk

Default avatar.png JBM: bon ca sera sans doute pas le pire truc que j'auria ecrit ce mois-ci

dbdr: friendly reminder: Java a un systeme de types très simple (à part pour les generics, un peu)

Default avatar.png JBM: oui oui je sais

Default avatar.png JBM: mais j'arrete pas d'espere que ca ait un peu plus evolue que ca pdt que j'avais le dos tourne

dbdr: tu n'es pas l'audience cible non plus ;)

Default avatar.png JBM: c'est clair

dbdr: peut-etre Scala un peu plus?

Default avatar.png JBM: oui

Default avatar.png JBM: ou clojure

dbdr: Scala -> Bytecode ->(decompile) Java ?

dbdr: et hop, un referee :)

Default avatar.png JBM: mais je peux pas et faire mon premier usage du SDK et utiliser un langage pas prevu pour du meme coup

Default avatar.png JBM: j'en suis encore a leur trouver les bugs

Default avatar.png JBM: alors le comprendre

dbdr: ben, c'est des langages prévu pour appeler des APIs Java, quand meme...

dbdr: donc c'est pas délirant

Default avatar.png JBM: c'est pas delirant

Default avatar.png JBM: mais leur runner qui prend une metaclasse plutot qu'un objet

Default avatar.png JBM: ca commence a pousser

Default avatar.png JBM: et autant j'ai deja fait des deux

Default avatar.png JBM: autant j'ai pas du tout en tete comment *implementer* une classe java avec eux

Default avatar.png JBM: alors qu'*invoquer* du java ca effectivement c'est facile [du moins a retrouver]

dbdr: je pense que c'est prévu aussi

Default avatar.png JBM: sans aucun doute

dbdr: mais j'ai pas pratiqué

Default avatar.png JBM: mais c'est beaucoup moins mis en avant

Default avatar.png JBM: pour des raisons evidentes certes

dbdr: p(Java peut faire X | c'est JBM qui demande) < 0.1

Default avatar.png JBM: c'est tellement vrai que ca me donne envie de pleurer

Default avatar.png JBM: c'est effrayant le syndrome de stockholm que cet ecosysteme a genere

Default avatar.png JBM: j'ai un semipote/collegue qui etait trop fan de java

Default avatar.png JBM: je lui disais que c'etait pas top mon langage prefere, trop bas niveau, pas de lambda convenable

dbdr: sans doute partiellement, mais ça dépend aussi bcp de tes attentes et culture

Default avatar.png JBM: il me recitait l'argumentaire sun standard sur "meuh non y'a pas besoin de lambda"

pardouin: 69ème à CoC, j'hésite à essayer d'améliorer mon rang :)

Default avatar.png JBM: 10 ans plus tard, y'a des lambdas dans java et il est evidemment trop fan

dbdr: :)

Default avatar.png JBM: mais il ne voit pas en quoi il manquait de credibilite a l'epoque

Default avatar.png JBM: java et python sont, je trouve, les langages qui generent le plus de cette pseudo-mentalite

Default avatar.png JBM: de gens "trop fan" qui ne comprennent au fond pas grand chose de leur langage faute d'etre ouvert a ce qui existe/est possible

Default avatar.png JBM: je tente l'approche class abstraite qui definit main (d'ailleurs y'en a pas une preexistante?), helper qui genere la classe a la volee avec ses parametres en closure

Default avatar.png happy-star: je voudrais apprendre à coder avec java

Default avatar.png JBM: bonne chance

pardouin: dans la communauté Python, tout ce que dit Guido est parole d'évangile, et du coup quand tu dis quelque part que c'est dommage qu'il manque telle ou telle feature, tu as 36 fanboys pour te répéter le même truc, genre "les sorted containers ça sert à rien, inutile de les avoir dans la bib standard"

Default avatar.png happy-star: ou je peux trouver des algo avec solution

Default avatar.png JBM: wikipedia

Default avatar.png happy-star: wikipedia :open_mouth:

Default avatar.png JBM: ok, ca je l'ai quand meme vu venir: [ERROR] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[115,37] illegal combination of modifiers: abstract and static

Default avatar.png JBM: qu'a cela ne tienne

Default avatar.png JBM: bon j'ai pas du tout besoin d'interface en fait

Default avatar.png JBM: new Object

Default avatar.png JBM: en voila une invocation que je fais pas tous les jours

Default avatar.png JBM: [ERROR] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[99,36] Illegal static declaration in inner class <anonymous TrollTest$1>

Default avatar.png JBM: ca progresse, c'est la que j'instancie et rajoute l'appel virtuel

Default avatar.png JBM: ah non merde

Default avatar.png JBM: c'est la qu'il me manque un nom de classe

Default avatar.png JBM: je refous une classe parente

Default avatar.png JBM: et j'en reviens au pb d'avoir un nom de classe

Default avatar.png JBM: mais mieux forme que tout a l'heure: dans un bloc de classe anonyme

Default avatar.png JBM: RHA [ERROR] modifier 'static' is only allowed in constant variable declarations

Default avatar.png JBM: j'ai pas dit mon dernier mot

Default avatar.png JBM: mais ca s'en rapproche :-/

Default avatar.png JBM: je commence a comprendre la correlation entre les fans de java et de code generators

Default avatar.png JBM: ah, mais j'ai pas encore essaye la reflection

BlaiseEbuth: T20h08e05o15

BlaiseEbuth: Exactement

Default avatar.png JBM: chouette mdp

BlaiseEbuth: T'as vu

BlaiseEbuth: merci le focus de merde

BlaiseEbuth: :grin:

Default avatar.png JBM: rha je trouve plus ce chouette site oueb

BlaiseEbuth: Demande à Zorg1

dbdr: static ça veut dire sans parametre d'instance. abstract ça veut dire que ce sera défini pour les instances des sous-classes concretes

Default avatar.png JBM: ca te fait donc bientot 12 ans

Default avatar.png JBM: je te voyais gamin, mais pas a ce point-la

Alshock: xD Pas d'accord, j'aime beaucoup python mais même moi je trouve que Guido dit pas mal de conneries

Default avatar.png JBM: dbdr: j'ai pas l'air comme ca, mais je connais les bases hein

Alshock: oups, scrolled up

dbdr: on dirait pas ;)

Default avatar.png JBM: ce code est dans un contexte hyper-particulier

Default avatar.png JBM: et c'est beaucoup moins evident quoi de tout ca s'applique aux classes anonymes

Default avatar.png JBM: (je viens de lire la spec, j'ai eu des surprises)

Default avatar.png JBM: la killer error pour l'instant c'est ca: [ERROR] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[101,36] Illegal static declaration in inner class <anonymous TrollTest$1>

dbdr: un champ/method statique dans une classe anonyme, tu l'appelerais comment?

Default avatar.png JBM: qui n'est pas evidente pour moi parce que je vois pas de raison sur le pourquoi pas

Default avatar.png JBM: toto par ex

dbdr: vu qu'il faut le nom de la classe

dbdr: qui est anonyme

Default avatar.png JBM: le nom... pourquoi

Default avatar.png JBM: elle arrive bien a appeler sa superclasse

Default avatar.png JBM: anonyme ne veut pas dire inexistante

BlaiseEbuth: J'essaye encore de comprendre comment tu calcules 12 ans à partir des définitions de static et abstract. :thinking:

Default avatar.png JBM: on pourrait avoir une ref vers la metaclasse, par ex

dbdr: si c'est statique ya pas de superclasse

dbdr: c'est juste un namespace

Default avatar.png JBM: oui

Default avatar.png JBM: mais il est dual ce namespace

dbdr: l metaclasse existe pas à runtime

Default avatar.png JBM: quoi

dbdr: tout à fait, c'est pas clean comme design

Default avatar.png JBM: a qui le dis-tu

dbdr: tu as pas de this

dbdr: donc pas de metaclasse

Default avatar.png JBM: tu as pas de this dans un contexte statique

Default avatar.png JBM: ok, pas de metaclasse

Alshock: les this non, mais j'ai du thym pour qui veut

Default avatar.png JBM: mais tu aurais pu avoir le namespace

BlaiseEbuth: fix ta serpolet

dbdr: purement syntactiquement oui

dbdr: mais du coup tu peux le faire à la main

Default avatar.png JBM: je m'en fous du comment

Default avatar.png JBM: je t'ecoute

BlaiseEbuth: La syntactique c'est quand tu codes pour tromper l'enemi

Default avatar.png JBM: je veux juste pouvoir des pt1 d'agents a la volee en leur donnant juste une liste de coups a jouer sans avoir a ecrire un main complet pour chacun!!!

Default avatar.png JBM: +le mot manquant

dbdr: tu peux définir une method non-statique dans le parent, non?

dbdr: pour factoriser

Default avatar.png JBM: elle y est

Default avatar.png JBM: abstract ClosureType getData();

Default avatar.png JBM: pour resumer

Default avatar.png Cylia: Salut tout le monde, je suis bloquée sur un truc pas mal d'heure, ça me rend dingue. Est-ce qu'il y aurait un ame charitable pour m'aider s'il vous plait ? J'ai juste une question

dbdr: JBM est sur le point de redécouvrir les Factory :D

Default avatar.png JBM: juste pose-la

Default avatar.png JBM: j'avais peur que tu dirais ca

dbdr: et de passer du coté clarement obscur

Default avatar.png JBM: parce que ce terme, je l'ai vu passer un paquet de fois dans mon googling du jour

BlaiseEbuth: design patern...

dbdr: ben c'est exactement pour ça

Default avatar.png JBM: je sais plus qui disait

BlaiseEbuth: berk

Default avatar.png JBM: les design patterns sont la trace des lacunes des langages

BlaiseEbuth: J'allais le dire

BlaiseEbuth: merci

Default avatar.png JBM: exactement pour ca?

Default avatar.png JBM: mes collegues qui faisaient du java s'en servaient juste pour instancier des objets a l'epoque

dbdr: en gros, new c'est toujours avec un type concret

Default avatar.png JBM: jusque ici ok

BlaiseEbuth: Cylia: j'ai pas d'âme, mais tu peux poser ta question

dbdr: si tu veux abstraire les new tu peux avoir un object qui en crée un autre

Default avatar.png JBM: jusque ici ok

dbdr: aka Factory

Default avatar.png JBM: mais est-ce qu'il arrive a me les generer dans une nouvelle classe a chaque appel?

Default avatar.png JBM: je suis plus proche du gensym que du virtual constructor, en termes de design pattern

Default avatar.png JBM: a lire la VF de la page factory, non c'est pas vraiment "exactement pour ca"

Default avatar.png Cylia: BlaiseEbuth : MP

dbdr: tu veux faire du metaprogramming?

dbdr: la nouvelle classe à chaque fois diffère comment des autres?

Default avatar.png JBM: par le contenu de la closure

Default avatar.png JBM: (la liste de coup, en l'occurrence)

Default avatar.png JBM: le main c'est juste un for(...) println(...)

Alshock: @Cylia oh n'héiste pas à poser tes question dans le grand monde ouvert, c'est pas les débats sur la factory de trolls en magie noire de JBM qui doit t'arrêter

Default avatar.png Cylia: @Alshock c'est sûr haha mais je préfère eviter d'interrompre votre conversation ^^'

Default avatar.png JBM: te formalise pas pour ca

Default avatar.png JBM: on a souvent 3 conversations paralleles

BlaiseEbuth: Mais si, faut les interrompre !

Default avatar.png Cylia: merci :D je saurais pour la prochaine fois

dbdr: je suis pas tout. pour une methode statique comme main, il faut la définir pour chaque point d'entrée, et oui c'est de la répétition

dbdr: tu peux juste le minimizer

Default avatar.png JBM: ben c'est nul :)

Default avatar.png JBM: je tente une avant-derniere approche avec des generics

dbdr: http://chat.codingame.com/pastebin/40a583e4-73d4-4abb-933b-709631a81693

dbdr: et la tu peux hériter des comportements communs

Alshock: .CeQueTuVeux();

Default avatar.png JBM: oui mais t'as qu'une classe la, elle peut pas statiquement diverger sur la data

dbdr: flemme :)

Alshock: CamelCaseMaTuer

dbdr: Child1, Child2, ...

Default avatar.png JBM: oui ok

Default avatar.png JBM: ca je sais faire

dbdr: ou Child(data)

dbdr: si tu peux réifier

Default avatar.png JBM: c'est ce que je cherche a eviter

Default avatar.png JBM: non ca ca marche pas

dbdr: à un moment il faut bien décrire les différences, non?

Default avatar.png JBM: sauf si tu me trouves un maniere de faire que j'ai pas essayee dans les 3 precedentes heures

Default avatar.png JBM: bien sur

Alshock: diantre j'avais jamais entendu quelqu'un d'autre qu'Aurélien Barrau dire "réifier"

Default avatar.png JBM: je dis juste qu'en l'etat, on n'a pas encore trouve comment le static main irait trouver la dynamic data

Default avatar.png JBM: c'est bien le noeud du probleme

dbdr: c'est super utile comme concept en programmation la réification

dbdr: et c'est (souvent) bien(TM)

Default avatar.png JBM: ben developpe. que je voie ce que tu veux dire

dbdr: je réponds à Alshock

Default avatar.png JBM: ah pardon

Default avatar.png JBM: j'avais zappe sa ligne :oups:

dbdr: :D

dbdr: joli

Alshock: ah ah déso, je parallélise trop ça devient de la parasitélisation

Default avatar.png JBM: oh t'as le droit d'aider aussi :p

Alshock: oulah

Alshock: on sort de mon champ de compétences par environ trois planètes

Default avatar.png JBM: c'est du java

Default avatar.png JBM: la terre entiere sait coder en java, non?

dbdr: JBM, si tu écris un exemple qui te plait pas, je peux voir si je trouve mieux

Alshock: évidemment

dbdr: c'est trop compliqué avec les descriptions partielles

Default avatar.png JBM: je te simplifie le truc et je le paste

Default avatar.png JBM: tu veux quel niveau de "marche pas"?

dbdr: :+1:

dbdr: c'est pas important que ça compile

dbdr: je veux comprendre tout le contexte

Alshock: @JBM J'aimerais tellement te voir débarquer dans les entretiens à chaque fois que quelqu'un dit qu'il maîtrise un langage et lâcher un "ça tombe bien justement j'ai une petite question..."

Default avatar.png JBM: http://chat.codingame.com/pastebin/2c0a03d2-9c7d-4b2c-a0c7-d1b2c389af57

**[CG]Thibaud va voir ce qu'est la réification

Default avatar.png JBM: j'en suis la

Default avatar.png JBM: cette variante pete pour la raison (sensee) de "ce main n'est pas assez static"

Default avatar.png JBM: vu qu'il ferme sur tosses

Default avatar.png JBM: tiens j'ai perdu le public sur la classe mere entre 3 tentatives

Default avatar.png JBM: Alshock: ca m'est deja arrive

Default avatar.png JBM: ca m'a un peu deprime

dbdr: deja renvoyer un Class ça complique énormément

Default avatar.png JBM: n'est-ce pas

dbdr: c'est l'API CG qui demande çá?

Default avatar.png JBM: oui

Default avatar.png JBM: en vrai y'a des alternatives

Default avatar.png JBM: mais c'est que des alternatives a base de spawn

Default avatar.png JBM: et c'est deja assez lent comme ca

Alshock: ah le spawn ça je connais, ça m'arrive à chaque fois que je fais de la merde dans un rpg :D

Alshock: :door:

Default avatar.png JBM: enfin un specialiste!

dbdr: static Class staticAgent(final int[] tosses)

dbdr: ça veut dire que tu veux pouvoir generer un nombre non borné de Class différentes?

Default avatar.png JBM: oui

dbdr: mon intuition c'est qu'il faut une classe unique

dbdr: tosses c'est des données

Default avatar.png JBM: sauf miracle je vois pas encore comment

Default avatar.png JBM: cf noeud

dbdr: noeud?

Default avatar.png JBM: neoud du pb

dbdr: c'est quoi l'API de CG?

Default avatar.png JBM: je sais pas comment repondre a ca surt un chan ou les [cg] ont droit de kick

Default avatar.png JBM: void GameRunner.addAgent <https://codingame.github.io/codingame-game-engine/com/codingame/gameengine/runner/MultiplayerGameRunner.html#addAgent-java.lang.Class->(Class <https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true><?> playerClass) Adds an AI to the next game to run.

Default avatar.png JBM: si c'est ta question

dbdr: lol

Default avatar.png JBM: [ERROR] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[109,28] non-static type variable C cannot be referenced from a static context

Default avatar.png JBM: bon c'est mal parti ca aussi

dbdr: tu generes des AIs de joueurs à la volée?

Default avatar.png JBM: pas encore. j'aimerais bien justement!

dbdr: oui, j'ai eu ce problème aussi pour faire tester mes solutions par le referee

dbdr: l'API est mal concue je trouve

Default avatar.png JBM: CHUT!

dbdr: :innocent:

Default avatar.png JBM: je suis pas du genre a me laisser decourager par les basses considerations comme ca

Default avatar.png JBM: mais la j'ai quand meme beaucoup pousse dans pas mal de directions

dbdr: donc, moi je dirais une seule classe

dbdr: et dans cette classe, tu récupères les données comme tu peux, aka cradement

Default avatar.png JBM: une seule classe, et je magouille avec un timer de lui changer ses data dans son dos?

dbdr: timer c'est tres vicieux :D

Default avatar.png JBM: mmm j'ai une autre vague approche

Default avatar.png JBM: je pense que le runner les instancie dans l'ordre

Default avatar.png JBM: donc une global static avec les deux listes de coup

Default avatar.png JBM: le constructeur les depile

Default avatar.png JBM: ca ca marcherait

dbdr: oui, il faudra de létat global

Default avatar.png JBM: que c'est laid

dbdr: c'est l'API qui demande ça, en gros

Default avatar.png JBM: yep

Default avatar.png JBM: allez hop

dbdr: addAgent devrait prendre une instance, pas une classe

Default avatar.png JBM: a qui le dis-tu

dbdr: après il y a peut-etre une raison que me raison ignore

dbdr: ;)

Default avatar.png JBM: ils sont trop fans de guice et ils veulent s'en servir partout?

dbdr: à la limite Player1.class et Player2.class

dbdr: histoire que ça dépende pas de l'ordre?

Default avatar.png JBM: boah

Default avatar.png JBM: crade pour crade

Default avatar.png JBM: "non j'ai mis une Queue c'est pas crade"

dbdr: allez, ponds nous du code digne du dailyWTF ;)

Default avatar.png JBM: je fais que ca depuis 3 semaines

dbdr: :D

dbdr: ça me rappelle le blog que j'ai lu ce matin, qui wrappait une lib stateful et non-tread-safe en rust pour que les états invalides ne soient pas représentables

dbdr: c'est du boulot, c'est sur, mais bon c'est la contrainte externe

dbdr: et c'est joli que ce soit même possible

Default avatar.png JBM: java.util.NoSuchElementException :-(

Default avatar.png JBM: mais wtf

Default avatar.png BladeEnder: allez les dev

Default avatar.png JBM: http://chat.codingame.com/pastebin/c7edb194-9215-42bd-b7a1-89d41f5e7efe

Default avatar.png JBM: il me lance ca dans un total autre contexte il semblerait

Default avatar.png JBM: quelle horreur

Default avatar.png JBM: bon on pourra pas dire que j'ai pas essaye d'etre de bonne volonte

Default avatar.png BladeEnder: si

Default avatar.png JBM: allez hop un bot en 0.5 lignes de perl

Default avatar.png JBM: mais on avance

Default avatar.png JBM: ou en 5 chars de bash plutot en fait

Stilgart: on dirait AutomatonNN

AutomatonNN: sans bon tu veux pas te dire que tu as fait un truc que tu as pas trop de regles pour te rendre comp

Stilgart: la magie des 0.5 lignes de perl :)

Default avatar.png JBM: ca y est, j'ai passe le cap

Default avatar.png JBM: mon premier JUnit *qui passe*

Default avatar.png JBM: toute ma pitie envers ceux qui font du java professionellement

BlaiseEbuth: Les TU en java c'est comme les tests de conformité environementale chez monsanto, c'est vraiment pour dire de les avoir fait...

FreexXx: Zorg1 youpi je te ratrappe enfin :p (fais croire que tu as passé des mois a codé ton ia et que tu en es fier xD )

FreexXx: https://www.codingame.com/share-replay/472100776

FreexXx: pas tres fair cette map non ??? ^^ https://www.codingame.com/replay/472102678

dbdr: il y a mirroir non?

FreexXx: je crois pas non

FreexXx: enfin j'ai pas l'impression

FreexXx: en changeant la position je gagne mais dans l'historique je trouve pas le mirroir

FreexXx: cool 700 to 369 grace au bfs :)

FreexXx: il me faut remplacer ma methode qui split mes troupes pour rien et je serai allé au bout de mon idée

dwarfie: salutations les gens , les tortues , les licornes , AutomatonNN et Automaton2000

Automaton2000: moi ça fait une grosse différence

AutomatonNN: oui je suis tout seul a pas te dire que tu parles de qui t'es mort ? :p

BlaiseEbuth: o/

dwarfie: AutomatonNN : you see dead people ?

AutomatonNN: tortue ne t'en sors pas AutomatonNN

dwarfie: YES !!!!

BlaiseEbuth: Un demi bravo

dwarfie: clair ... vu que Automaton2000 a encore decide de rien dire d'intelligent ;)

Automaton2000: comment on fait pour avoir une bonne raison

dbdr: AutomatonNN se ping tout seul maintenant?

AutomatonNN: oui

FreexXx: la barre des 100 000 joueurs a etait depassé sur csb :)

dbdr: :scream:

Adji: Bonsoir

Adji: Je dois passer un test d'entretien sur coding game, comment il faut s’entraîner pour être bon le jour J.

Adji: Merci

dbdr: je pense que faire des puzzles peut etre utile: https://www.codingame.com/training

pardouin: https://cses.fi/book/book.pdf

pardouin: la base

dbdr: je suis pas sur que ça corresponde aux questions typiques d'entretien, ça, si?

BlaiseEbuth: Bof

pardouin: à lire surtout après avoir fait pas mal de pbs par soi-même, pour compléter, prendre du recul

BlaiseEbuth: C'pas trop l'genre des tests...

BlaiseEbuth: Adji.rotate(-90);

pardouin: quand tu as un reverse sur CoC, que ton truc passe 100% des tests, tu soumets et là 75% :/

pardouin: encore sur un CoC de rapidité où les règles sont énoncées clairement c'est à toi d'anticiper mais quand les règles sont à deviner c'est moyen

BlaiseEbuth: On t'a dit CoC is bad. Tu en fais quand même ? Te plains pas. :grin:

pardouin: une idée de pourquoi ça ne passe pas :

pardouin: http://chat.codingame.com/pastebin/d6ad04f6-fe4a-44dd-826f-5a30b40db6d2

pardouin: alors que ça passe 100 % :

pardouin: http://chat.codingame.com/pastebin/f34d3804-173c-44ee-9193-e6a91b4e1c9a

pardouin: (il fallait juste afficher autant de a qu'il y a dans le mot puis autant de b etc en comptant majuscules et minuscules)

BlaiseEbuth: skoi n ?

Neumann: Il suffit pas de passer ton string en lowercase, de virer les chars qui sont pas des lettres, puis de sort les caractères de la chaine obtenue par ordre alphabétique ?

Default avatar.png JBM: t'as une ame de clasher toi

BlaiseEbuth: Comme les jluifs ?

Neumann: Wow

Default avatar.png JBM: oui il est tres limite ces derniers jours

Default avatar.png JBM: il s'en fait une fierte pour se donner un genre mais ca va finir psa se retourner contre lui

pardouin: on est d'accrod neumann mais j'ai fait le premier truc qui m'est venu

Neumann: Yes, la panique du clash

pardouin: mais tu vois d'où peut venir l'erreur ou pas?

Neumann: Happens

Neumann: Pas vraiment, sur le papier ça a l'air pas mal

BlaiseEbuth: Hmm ? Pourquoi limite ?

Neumann: Pas une histoire de "isalpha" qui considère la ponctuation comme OK ?

pardouin: je vais voir la doc

pardouin: non apparemment c'est vraiment que a-z et A-Z

Neumann: Je sais pas alors

BlaiseEbuth: Esprits étriqués...

Zorg1: bah dans le premier cas tu comptes les minuscules, or tu peux regarder avec une majuscule

Zorg1: donc c'est normal qu'il y ait des cas où ça merde

Zorg1: dans le premier cas quand tu appelles s[a] tu devrais convertir a en minuscule

Zorg1: Automaton2000 AutomatonNN la forme ?

AutomatonNN: oui oui

Automaton2000: ça me fait penser à un truc

Zorg1: pardouin : (j'ai répondu à ta question)

pardouin: j'ai converti tout en minuscules dès le début donc normalement pas de soucis

Zorg1: bah non seulement pour compter

pardouin: et je passais des tests qui mélangeaient maj/min sans pb

Zorg1: ah ok

Zorg1: pas vu désolé

Zorg1: mais attend quand tu itères sur un tableau comme s avec list(s), t'es sûr qu'il te récupères les clés, pas les couples clés/valeurs ?

Zorg1: pas un tableau un dictionnaire

pardouin: list(dict) donne la liste des clés

pardouin: c'est items pour chopper les deux

nicola: En Python ? Pour les clés, tu peux les avoir avec tondico.keys().

BigUP: oui c'est plus propre

Topinambour: mais les clés de s, ça va être quoi ? des chaînes ou des nombres ?

nicola: C’est quoi, s ?

BigUP: Topinambour, c aca dépend si tu as mis des nombre ou des chaines

Zorg1: s = Counter(input().lower())

nicola: Vois un dictionnaire comme une application mathématique.

nicola: Je ne connais pas Counter.

nicola: Les valeurs sont les images.

nicola: Les clés, les « antécédents ».

Zorg1: si les clés sont des nombres, alors isalpha() risque de ne pas marcher dessus

nicola: Yep.

nicola: Un nombre n’a pas cette méthode.

Zorg1: Counter => ça pète une liste (là une chaîne) en éléments et ça les compte

nicola: Bon, je retourne remplir des bulletins.

nicola: Ha OK.

Zorg1: après les élements d'une chaîne en python, c'est quoi une chaîne ou un nombre (le codepoint du char ?)

nicola: C’est dans quelle bibliothèque ?

nicola: Les éléments d'une chaîne sont des nombres.

nicola: C’est pour un byte où ce sont des nombres.

Zorg1: pas un byte, c'est des str unicode maintenant je crois

nicola: "bidule" est par défaut un str en utf8.

Zorg1: pardouin : pê trouvé une explication

pardouin: dans l'exemple le Counter va être un dict dont les clés sont les char contenus dans la chaine

pardouin: le script que j'ai mis passait tous les test donc le truc marche dans la plupart des cas

pardouin: je viens de découvrir une nouvelle astuce de golf, je vous la partage : on peut faire input(truc) à la place de print(truc)

Zorg1: allors c'était quoi le problème avec le premier truc ?

pardouin: tel quel ça paraît inintéressant mais s'il y a au moins 2 input et un print on peut définir I=input et on y gagne

pardouin: (le script passait 100% de tests mais seulement 75% à la soumission, aucune idée de pourquoi)

Zorg1: ah un caractère accentué considéré comme un alphabétique par isalpha

Zorg1: mpais c'est étrange je croyais qu'ils évitaient les non ASCII dans leur puzzle

pardouin: tu dois avoir raison

pardouin: je vois des sources qui disent que c'est seulement a-z A-Z et d'autres qui disent que les lettres accentuées comptent

pardouin: alors soit ils ont changé ça dans une version récente, soit ça dépend de l'environnement

pardouin: merci en tout cas

Zorg1: aund je regardesla doc isalpha de python il a l'air de bosser dans unicode

Zorg1: donc les "lettres" ne sont pas que [a-zA-Z]

Zorg1: après bon c'est pas recommandé d'utiliser autre chose que des ASCII, mais bon vu les process de validation des CoCs

Zorg1: (dans les entrées/sorties des puzzles et CoC)

Zorg1: OK en lua pour faire des simus c'est pas la joie

Zorg1: les seules fonctions de temps disponibles par défaut ont une résolution à la seconde.

Zorg1: ça va être dur pour 50 ms ^^

dbdr: https://wiki.cheatengine.org/index.php?title=Lua:Class:Timer

dbdr: ça parle de ms

dbdr: Zorg1:

Zorg1: oui mais c'est une lib en plus

Zorg1: dans CG tu as vraiment le paquet des libs de base

dbdr: ah. faut peut-etre demander à CG de l'ajouter

Zorg1: qui est assez minimalistes

dbdr: ça il le font assez facilement

BlaiseEbuth: Du lua sans ms donc ?

Zorg1: bah dans la config de base oui

dbdr: une stdlib minimaliste c'est mieux qu'une stdlib énorme dont la moitié est deprecated

Zorg1: ah non os.clock() retourne une fraction de seconde

dbdr: apres sur CG c'est limitant parce que tu controles pas

dbdr: ça parait plus raisonable d'avoir ça qd meme, c'est assez fondamental

BlaiseEbuth: les chronos c'est pour les faibles

Zorg1: mais tout le monde n'arrive pas forcément à faire un MC avec une seule simu ;-)

Zorg1: "je tire au sort et hop c'est la solution optimale"

BlaiseEbuth: J'ai pas dit qu'il fallait en faire qu'une, j'ai dit de le faire sans chrono

Zorg1: oui je faisais un paquet determiné de simus

dbdr: let x = random.good()

Zorg1: "pas besoin d'heuristique quand on a du bon random"

dbdr: println(random.feeling_lucky())

Alshock: xD vous êtes cons ! Je vous aime :D

BlaiseEbuth: Toi aussi t'es con.

Zorg1: Automaton2000, enchaîne !

Automaton2000: ah mais tu parles de quoi?

Zorg1: ça serait pratique s'il y avait un pretty printer dans l'IDE pour reformater mon code ^^

Default avatar.png JBM: avec des si

RomanceDawn: on coupe du bois

RomanceDawn: et on fait de la musique

BlaiseEbuth: muscieque

RomanceDawn: :thinking:

RomanceDawn: bon je vais me coucher moi

Zorg1: le si tourne en rond

Default avatar.png JBM: les six rondelles reviennent

dbdr: j'aillais dire qu'apres Control-A Control-X ça (re)formate, mais bon, reflechissez avant d'essayer ;)

Default avatar.png JBM: j'ai peur

RomanceDawn: controlx c coupé nan

dbdr: oui

Bon[]Crayon: ctrl sfit i avec certain language ça fonctione

dbdr: du coup c'est bien formatté après

Zorg1: le matheux : "pour bien formater, commençons par le cas trivial, le fichier vide" :p

Zorg1: après on procède par récurrence ...

dbdr: pour le cas non trivial, vider le ficher, puis voir ci-dessus

Zorg1: Ctrl+Shift+i ça ouvre la console JS sur FF :D

Default avatar.png JBM: ah? chez moi c'est alt-f4 qui fait ca

Zorg1: l'horrible vérité fait jour : je suis sur Windows ...

Bon[]Crayon: c'est le raccourci indiqué dans l'aide de l'ide

Default avatar.png JBM: deja t'as trouve comment unlock l'aide

Bon[]Crayon: click dans l'éditeur puis F1

Zorg1: c'est un achievement ? on a de l'XP si on fait ça ? ^^

Default avatar.png JBM: erf

Default avatar.png JBM: t'as fait alt-f4, pas f1 la

Bon[]Crayon: c'est une astuce d'AutomatonNN

AutomatonNN: et je me demande si c'est pas un problème de contest pour le top 20

Default avatar.png JBM: c'est a craindre

Zorg1: ah encore une bidouille avec des réseaux de neurones

Default avatar.png JBM: [WARNING] /home/nemo/private/game-troll/src/test/java/TrollTest.java:[60,35] unchecked cast

Default avatar.png JBM: ca sous-entend qu'il existe un "checked cast"?

Default avatar.png JBM: comment qu'on fait?

Zorg1: the gcc way of life : "c'est un warning, on s'en fout" :p

Default avatar.png JBM: maiheu

Default avatar.png JBM: ca fout du rouge dans mes compiles

BigUP: ca fait joli !

Zorg1: euh normalement rouge c'est une erreur, warning c'est jaune (enfin sur mon eclipse)

Default avatar.png JBM: c'est mon nightmode qui les rend durs a distinguer

Zorg1: après t'as peut être des settings de h4ck3ur

Default avatar.png JBM: surtout quand y'a pas d'erreurs pour comparer

Zorg1: y a la méthode "professionnel de la profession", tu demandes à éclipse de te générer une annotation pour ignorer le warning de cast

Default avatar.png JBM: les trucs de pro

Zorg1: oui genre "y a un warning on le met sous le tapis"

Default avatar.png JBM: http://chat.codingame.com/pastebin/c004e42f-6c07-4024-b849-3709f9f7ec95

Zorg1: Quand t'as des libs disparates tu peux pas trop éviter

Default avatar.png JBM: si je caste le param E en (List) ca passe avec trois warnings

Default avatar.png JBM: ce qui est mieux qu'une erreur je te l'accorde

Default avatar.png JBM: mais je prefererais que ca juste passe sans warning ni erreur

Default avatar.png JBM: l'appel est dans un bloc if (v instanceof List), si ca change qqch

Zorg1: t'as encore fait un truc tordu de Haskelleux ...

Default avatar.png JBM: ben ou8i

Default avatar.png JBM: je suis pas un pro de java comme vous moi

Default avatar.png JBM: l'autre jour je suis tombe sur les docs et tutos d'oracle

Default avatar.png JBM: qui disait que java etait un langage a typage statique fort

Default avatar.png JBM: du coup je comptais un peu dessus

Zorg1: les génériques ça été un peu rajouté quand le bateau traçait en mer

Default avatar.png JBM: "ouhla on se prend des raclees a cause de la STL"

Default avatar.png JBM: comment je caste mon E en List<V>?

Default avatar.png JBM: j'ai essaye des trucs, il me dit qu'il connait pas V

Default avatar.png JBM: je pourrais le rajouter aux parametres de la methode, mais ca ferait un peu bizarre

Zorg1: c'est quoi la déclaration de ta fonction ?

Default avatar.png JBM: vu que c'est que dans un cas particulier qu'il aurait du sens

Default avatar.png JBM: static <E> void dumpGeneric(PrintStream p, E v) {


Default avatar.png JBM: http://chat.codingame.com/pastebin/31a5f9bd-2368-4cec-bb3c-4580c1bfc8cf

Default avatar.png JBM: pour etre exhaustif

Default avatar.png JBM: allez je rajoute un V pour voir

Default avatar.png JBM: plus que 2 warnings

Default avatar.png JBM: bon ben c'est toujours ca de pris

Default avatar.png JBM: unchecked cast

Default avatar.png JBM: OUI JE SAIS DIS MOI JUSTE COMMENT LE CHECK

Default avatar.png JBM: heureusement qqun a deja pose la question a SO

Zorg1: dumpList pose problème aussi, non ?

Default avatar.png JBM: non

Default avatar.png JBM: ah, si

Default avatar.png JBM: mais rav

Default avatar.png JBM: un autre checked cast

Default avatar.png JBM: celui que je vous ai donne tout a l'heure d'ailleurs

Zorg1: c'est quoi son prototype à dumpList ?

Default avatar.png JBM: mais t'etais ptet pas encore la

Default avatar.png JBM: static <V> void dumpList(PrintStream p, String tag, List<V> list) {


Zorg1: houla effectivement ça pose problème ça

Default avatar.png JBM: rha

Default avatar.png JBM: pourquoi?

Zorg1: en compile time il a aucun moyen de checker, vu que "instanceof List" c'est du runtime

Zorg1: (en gros, je sais pas si je suis super clair)

Default avatar.png JBM: sisi j'arrive a suivre

Default avatar.png JBM: donc un checked cast est pas possible et de AbolishWarnings?

Topinambour: voilà tu peux toujours forcer un check de v en List, mais en gros tu peut pas savoir le QUoi de List<Quoi>

Zorg1: oups

Default avatar.png JBM: elle se met ou l'annotation?

Default avatar.png JBM: pas au debut de l'expression du cast apparemment

Default avatar.png JBM: ni au debut du statement

Default avatar.png JBM: avant la methode ca passe

Zorg1: si t'as un warning dans éclipse si ti clique (gauche ou droit) je ne sais plus sur le warning il va proposer de te l'ajouter

Default avatar.png JBM: c'est pas super fin comme granularite dites-moi

Default avatar.png JBM: j'ai pas eclipse

Default avatar.png JBM: bon, plus qu'un warning

BigUP: p'tete si tu jette Eclipse ?

Default avatar.png JBM: (mais je suis pas super satisfait pour celui-la, j'y reviendrai

Default avatar.png JBM: V[] a = (V[]) list.toArray();

BlaiseEbuth: Oh oui, java c'est fin, c'est très fin... C'est roulé sous les aisselles.

Default avatar.png JBM: aussi unchecked cast

Zorg1: hop https://stackoverflow.com/questions/1129795/what-is-suppresswarnings-unchecked-in-java

Zorg1: ah list.toArray => ça marche ça ? c'est toujours le bazar ce truc à faire marcher

Zorg1: tu peux mettre l'annotation juste devant l'instruction qui pose problème

Default avatar.png JBM: juste avant l'instruction j'ai pas reussi

Zorg1: bigUp BlaiseEbuth : pas fini de critiquer ce *super* langage qu'est Java, oui ?

Default avatar.png JBM: Ah!

Default avatar.png JBM: j'ai elimine le suppresswarnings

Zorg1: sinon je vais vous évangéliser à coup de baton, moi

Default avatar.png JBM: avec ca: if (v instanceof List) dumpList(p, null, (List<?>) v);

BlaiseEbuth: perl bless Zorg1

BigUP: Zorg1, la je critique non seulement Java, mais le super programme fait avec Java qu'on appel Eclipse !

Default avatar.png JBM: plus que mon toArray, donc

Zorg1: BigUp : oui programmer avec Eclipse, parfois c'est un peu faire une régate avec un super tanker

BlaiseEbuth: Oui mais à la rmae le super tanker.

BlaiseEbuth: µRAME

BlaiseEbuth: BREF

Zorg1: Garde Chiourme Java

Zorg1: un boulot d'avenir

Zorg1: tu donnes le rythme sur ton tambour

BigUP: surtout que maintenant il y a quand meme des trucs qui font la meme chose en étant un poil moins lourd

BlaiseEbuth: Que les supertanker ?

Zorg1: c'est marrant quand Eclipse était arrivé c'était un progrès par rapport au IDE de l'époque

Zorg1: Netbeans c'était vraiment d'une lenteur monstrueuse

BlaiseEbuth: intellij c'est cool, sauf le java...

BigUP: en meme temps, j'ai jamais vraiement utilisé d'IDE... que de l'editeur de texte léger rapide et efficace

Default avatar.png JBM: ed

Zorg1: VC est pas mal

Zorg1: JBM : edlin aussi pour les vieux du MSDOS ?

Default avatar.png JBM: c'est le meme esprit

Zorg1: avec l'assembleur 8086 fourni, je ne sais plus comment il s'appelait

Default avatar.png JBM: debug.com

Zorg1: ah il n'avait pas repris le nom DDT de CP/M

Zorg1: ça aurait pê un peu trop visible qu'ils avaient pompés comme des gorets

Default avatar.png JBM: adn corporate local

Default avatar.png JBM: ListIterator a un .nextIndex(), mais pas de index

Default avatar.png JBM: doit y avoir un trucc qui m'echappe encore

Zorg1: ListIterator il peut pas aller dans les deux sens ?

Zorg1: en fait le curseur est toujours entre deux éléments jamais sur l'un

Default avatar.png JBM: ah ok je comprends mieux

Default avatar.png JBM: ok alors jme refais un foreach avec ca et je me debarrasse de l'array

Default avatar.png JBM: et du warning

Zorg1: ce qui fait que la sémantique du remove et du set sont un peu bizaroïde

Default avatar.png JBM: ah oui c'est un peu chelou a lire le texte

Default avatar.png JBM: heureusement j'ai pas besoin de ca

Default avatar.png JBM: rha mais

Default avatar.png JBM: y'a pas de get() sans next()

Default avatar.png JBM: les gens qui ont concu ca ont jamais ecrit de boucle for?!

Zorg1: ?

Default avatar.png JBM: comment tu ecris l'equivalent du C++ for(container::iterator i = c.begin(); i != c.end(); ++i) ?

Zorg1: si tu fais un "foreach" t'en as pas besoin non ?

Default avatar.png JBM: j'ai besoin de l'indice

Zorg1: for (String s: maListedeString) { }

Zorg1: ça marche aussi avec un tableau, ça se débrouille avec l'Iterator normalement

Default avatar.png JBM: j'ai besoin de l'indice, bis

Zorg1: ?

Zorg1: ah ok

Default avatar.png JBM: 0, 1, 2, 3

Zorg1: je comprenais de travers

Default avatar.png JBM: donne-moi un indice

Default avatar.png JBM: donne-moi un plus gros indice

Zorg1: le plus simple c'est encore de faire à l'ancienne

Default avatar.png JBM: a l'ancienne c'est un array

Default avatar.png JBM: donc warning

Zorg1: for(int i=0;i<array.length;i++) ça marche pas ?

Default avatar.png JBM: c'est ce que j'avais

Default avatar.png JBM: ca marche, mais pour avoir l'array j'ai le warning de cast

BigUP: Tiens... Juste derriere toi Zorg1 sur PR2 ;)

Zorg1: PR2 j'ai pas touché depuis le début de l'unofficial

Zorg1: je me suis inscrit mais bof

BigUP: idem, je viens juste de resubmit

Default avatar.png Zefaryo: J'ai un problème et je ne vois pas d'où ça vient : http://chat.codingame.com/pastebin/27dcf7f3-632a-4adc-8303-ef64d642f602

Zorg1: ça j'ai fait j'ai perdu 200 places ^^

BigUP: Zefaryo, t'as forcément un \n en fin de ligne

Default avatar.png JBM: et hpo, plus de warning de java

Default avatar.png Zefaryo: Si je supprime le dernier caractère du string c'est le # qui part

BigUP: Zefaryo, balance ton code ici directement

Default avatar.png Zefaryo: Il n'est pas très beau mais voici: http://chat.codingame.com/pastebin/b9ec710a-5e84-4dbb-8c03-a625712fa292

Default avatar.png JBM: deja c'est pas du java

Zorg1: ah du C ça change ^^

BigUP: Zefaryo: printf("%s\n",output[height]);

BigUP: tu vois que tu en as un ! ;)

BigUP: Zefaryo, printf met déjà un \n

Default avatar.png Zefaryo: C'est lui qui part :printf("%s",output[height]);

Zorg1: BigUP : euh non

Zorg1: faut lui dire d'un mettre un

BigUP: Zorg1, ha !? mince, c'est loin le C pour moi alors ! :)

Default avatar.png Zefaryo: D'ailleurs bizarrement quand je mets le printf dans la boucle qui tourne dans le vide, rien ne s'affiche

Default avatar.png Zefaryo: La boucle à la fin du main

Zorg1: par contre est ce que la string n'en aurait pas un par hasard ?

Default avatar.png Zefaryo: Non, j'ai essayé : Si je supprime un supposé \n c'est un autre caractère qui part

Default avatar.png Zefaryo: Comme ça: Échec Trouvé : "###" Attendu : "### "

Default avatar.png JBM: c'est quoi le texte du cas de test?

Default avatar.png JBM: ton pb c'est pas juste que t'affiches qu'une lettre?

BigUP: Zorg1, je suis passé devant ;)

Zorg1: gg

Zorg1: je me suis vengé avec mon smurf en lua sur SR qui est devant toi avec 1500 simus :p

Default avatar.png Zefaryo: Il faut juste que j'affiche E en ascii mais il y a un \n en trop supposement. Cependant lorsque je supprime ce caractère en trop, c'est un espace qui part donc j'en déduis qu'il n'y a pas de \n

Default avatar.png JBM: je ne suis pas sur que les espaces en fin de lignes comptent

Default avatar.png JBM: y'a toujours pas de std::pair, de multiple value return ou de parametres bidirectionnels en java?

pardouin: c'est pas de là que tu récupères un \n :

pardouin: fgets(ROW, 1025, stdin);

pardouin: ?

Default avatar.png SupergreenTony: Zefaryo, regarde bien, chaque lettre en ASCII contient N caractères DONT un espace à la fin ;)

Default avatar.png Zefaryo: J'ai bien un espace vu que les lignes précédentes sont acceptés

Zorg1: en fait c'est très bête

Zorg1: fgets récupère un '\n'

Zorg1: mais le problème c'est que tu as deux chars dans T

Zorg1: la lettre et le '\n'

Default avatar.png Zefaryo: Ah oui, effectivement! ça explique pourquoi la boucle tournait pour un caractère en plus

pb4: JBM : "multiple value return ou de parametres bidirectionnels en java?"

pb4: Ca existe en C++ ?

Zorg1: et ça doit générer des sorties de merde qui stresse CH

Zorg1: *CG

pb4: Le multiple value return j'utilise pair/tuple et "structured bindings", il y a mieux ?

Default avatar.png JBM: en c++ tu peux feinter du return multiple avec std::pair ou tuple

pb4: et les paramètres bidirectionnels ?

Default avatar.png JBM: et t'as des parametres bidirectionnels avec les references et/ou les pointeurs

pb4: Ok

pb4: Il me semblait que java n'avait que des références, donc ça a les "paramètres bidirectionnels" non ?

pb4: Mais je ne connais pas vraiment java...

Default avatar.png JBM: ben...

Default avatar.png JBM: je vois pas comment "inviter" la fonction a m'ecrire 2 ints

Zorg1: sauf pour les types primitifs ...

pb4: ah...

pb4: return a + 100000*b ? :D

Default avatar.png JBM: j'imagine que le "design pattern" est de cliquer la ou la dans l'ide pour qu'il te genere une classe paire aux types qui vont bien

Default avatar.png JBM: que tu accedes depuis l'appelant

Default avatar.png JBM: t'as une pression sociale forte pour lui donner un nom intelligent

pb4: std::javapair

Default avatar.png JBM: et ensuite l'effet de groupe fait que tlm trouve ca mieux qu'un type anonyme ad hoc

pb4: <3 pair et tuple

pb4: J'en ai partout dans mes codes :)

pb4: peut être à l'excès....

Default avatar.png JBM: y'a meme une forme primitive de destructuring bind maintenant en C++

Zorg1: pb4 : return a+10000*b : t'as codé avec les meilleurs toi :p

pb4: Zorg1 : j'apprends et je ne pratique que sur CG

Default avatar.png JBM: on est encore loin du niveau common lisp (ou meme octave, tiens)

Zorg1: (j'avoue avoir eu recours à cet expédient)

Default avatar.png JBM: mais ca progresse mieux que java

pb4: Zorg1 : moi je n'avoue rien

BigUP: Zorg1, ha t'as sorti ma fitness de SR !?

pb4: (pas sûr de l'avoir utilisé à vrai dire...)

Default avatar.png JBM: bah, ca peut toujours servir

Zorg1: bigUp : gné ?

Default avatar.png JBM: c'est probablement marginalement mieux avec un a+256^4*b

BigUP: Zorg1, ma fitness de SR a la meme tete :)

Zorg1: c'est pb4 qui doit voir ton code alors ^^

Default avatar.png JBM: mais bon, pour tvc j'essaie de faire du code idiomatique exemplaire

Default avatar.png JBM: et je me heurte a de bien tristes conclusions

Zorg1: mais bon ma fitness SR doit avoir la même tronche également

BigUP: Tin j'essaye d'améliorer mon code PR2, mais j'ai tellement fait ca crade, que j'ai du mal a voir ce que je fais !

Zorg1: ouaip c'est pour cette raison que j'ai même pas essayé de l'améliorer

Zorg1: je pense qu'il faut tour réécrire

BigUP: je vais essayer de rendre mon code plus lisible, mais ca va etre long....

Zorg1: il finit Lundi l'unofficial ?

BigUP: un truc comme ca, mais je m'en tape du concour

Zorg1: ah t'es là aussi pour la gloire ? ^^

leojean890: pas inscrit, avais pas trop envie en voyant que ça existe, et encore moins en sachant que c'est PR2..

leojean890: les multis j'y ai passé pas mal de temps récemment déjà sans ça..

Zorg1: surtout sur SR ces derniers temps pour ma part

leojean890: From 2020-06-05 7am UTC to 2020-06-15 7am UTC

leojean890: par contre je jette des cous d'oeil à leur LB de temps en temps

leojean890: coups

Zorg1: LB ?

leojean890: leaderboard

leojean890: Nerchio a commencé pour l'occas et est 6eme par ex

Zorg1: ah

leojean890: il a tt remonté en qq jours quoi

leojean890: ouais SR pour toi, moi j'ai varié par périodes

leojean890: tiens j'ai pas testé ça mais ça semble sympa pour analyser des replays https://github.com/sethorizer/csb/tree/master/src

leojean890: je ne sais pas qui c'est sur CG

BigUP: J'ai pas compris ce que fait son truc

Default avatar.png JBM: ce pseudo me rappelle qqch

leojean890: j'ai juste lu le code, je vois pas exactement ce que ça fait mais ça peut se tester pour mieux comprendre ce que ça fait :P

BigUP: leojean890, c'est un simulateur qui doit plus ou moins analyser ce que fait le code d'un player

leojean890: ouais je pense aussi

leojean890: dans son main il hardcode des positions de pods

leojean890: et dans son dossier data il a des replays du genre

leojean890: replay_pb4vsNeumann_1.txt Updated for accurate angles and CP testing.

leojean890: genre analyse de replays de codes performants ;P

leojean890: Specify your binary with --binary and choose the replays with --replays

leojean890: ça fait arène locale

BigUP: ca ressemble a ca

Snef: c'est pour tester la précisions de ton moteur de ce que je vois dans le readme

Snef: -s

leojean890: test_categories = {

leojean890: '01_only_moving':

leojean890: '02_activating_boosters':

leojean890: en effet ça doit être ça Snef

leojean890: vu qu'il y a des tests de parties du bot spécifiques

leojean890: j'aim bien le code csb d'inory avec char copyright[] = "github.com/..."; // do not remove

leojean890: printf("%d %d BOOST %s\n", (int) round(px), (int) round(py), copyright);

leojean890: pour l'afficher en msg dans les output lol

BigUP: C'est bien ca, il y a un gars qui spam push loose contre moi sur PR2... je vais gagner de la place ! ;)

leojean890: mdr le hasard des submits hehe

leojean890: pareil j'a jeté des coups d'oeil à l'évol de mon ranking et ça varie bcp dans les 2 sens

leojean890: j'ai du perdre 20 places avec leur contest pour le moment:P

leojean890: j'sais tjr pas quoi faire sur csb en tt cas xd

Zorg1: faut que je reporte mes bidouilles de SR dans CSB moi

Zorg1: histoire de voir si ça me fait gagner des places

Default avatar.png JBM: bon ca va suffire

Default avatar.png JBM: commit, push et bn

Zorg1: bn

leojean890: autant tester j'avoue :P

Default avatar.png JBM: attends j'en suis pas encore la!

leojean890: bn

Default avatar.png JBM: me stressez pas!

Zorg1: pouvez pas rester ici en pyjama Monsieur

Default avatar.png JBM: en pyjama?

Default avatar.png JBM: euh...

Default avatar.png JBM: ici on est en ete depuis 4 mois

Zorg1: ah oui le Sud

Zorg1: à Paris c'est un peu plus flou

Default avatar.png JBM: flou c'est botre terme pour le brouillard?

Zorg1: pour moi c'est le mixte entre un coup il pleut, un coup il fait lourd

Default avatar.png JBM: allez bn

leojean890: il a fait 30++ il y a pas si lgtps:p

Zorg1: bn

leojean890: bn

Default avatar.png JBM: leojean890: tu veux dire "dans les 10 dernieres annees"?

leojean890: 30 degrés il y a 10j;P

leojean890: même en mars j'allais randonner en t shirt

leojean890: ;)

leojean890: confinement sympa dans la campagne quoi

leojean890: et avec beau temps et 20 deg en mars

leojean890: par contre le week-end dernier c'est un peu redesc

leojean890: (30 => 18)

leojean890: ça n'a fait qu'alterner quoi mais en moyenne je le sens le réchauffement climatique

Default avatar.png GaryAflalo: Vous savez à quel h chaque uit s'actualise les classements ?

Default avatar.png JBM: Minuit et quart je crois

leojean890: plutot dans les 2h non ?

Default avatar.png JBM: Si tu le dis

Default avatar.png JBM: Ça doit être dans la FAQ non?

Default avatar.png GaryAflalo: Ouais je pense plus tard parceque la ils ont pas encore actualisé