Chat:Fr/2020-12-03
Stilgart: bonjour à tous, tortue à Automaton2000 et licorne à AutomatonNN
Automaton2000: et puis c'est tout !
AutomatonNN: voir pour le contest de contest de pourquoi ?
PhOeNyX: o/
Bob: AutomatonNN, Automaton2000, \o/
AutomatonNN: oui
Automaton2000: mais par contre pour les perfs
Bob: powershell c'est fascinant
Bob: on dirait que les concepteurs on fait un genre d'exercice de style surrealiste
Bob: "on va faire yet another shell, mais en s'eloignant le plus possible des syntaxes et des comportements auxquels les gens sont habitues"
Bob: c'est un peu le BF des shells
nicola: Un BFS (BF shell).
b0n5a1: o/
dbdr: Powershell c'est pas le syndrome du second système?
dbdr: "cette fois-ci, on refait tout, mais super bien, avec plein de jolie features"
dbdr: l'existant est nul, on jette tout et on recommence, on est les plus forts, ceux qui ont bossé avant ils étaient nuls, c'est tout
dbdr: https://i.snipboard.io/zyYwGq.jpg
b0n5a1: bin quoi ils sont biens ces nichoirs à piafs
CopperFr: Pourquoi tu utilises powershell Bob ?
b0n5a1: il est puni
CopperFr: sinon y a Giscard qui est décédé
Bob: je crois que c'est le defaut de vscode sur windows et en fait je m'en sers assez peu souvent du coup je tolere
CopperFr: j'avais trouvé ca bien quand j'en avais fait il y a quelques années
Bob: c'est tellement fait pas comme le reste qu'on pourrait croire que ca a ete concu par des Francais
Bob: #secam
b0n5a1: ça me rappelle le SECAM
b0n5a1: lol
CopperFr: le SECAM c'était bien par contre :D
b0n5a1: et les russes avaient pomper le secam pour faire une tambouille dérivée à eusx un moment
Bob: Surtout Eviter la Compatibilite Avec le Monde
CopperFr: c'était plus complexe parce qu'il fallait une ligne à retard :D
GDGiantDwarf: C'est quelque chose de courant, ici, de demander de l'aide sur les problemes ?
Bob: bon si j'essays de faire semblant de bosser ?
Bob: oui, assez
b0n5a1: la ps1 supportait en natif secam et ntsc...quand tu chopais une image de CD US...fallait patcher l'image pour executer l'instruction "passe en secam" ^^
Bob: a egalite avec troller et raconter des conneries
Bob: fix ton reception JBM o/
GDGiantDwarf: je suis en train de bloquer sur le probleme d'encryption type enigma, en C
CopperFr: t'es pas alan turring :D
GDGiantDwarf: ça c'est bien vrai
GDGiantDwarf: mais moi on me donne la solution et j'y arrive pas, et ça c'est bien triste
JBM: je crois que de nos jours, y'a plus grand monde qu'est alan turing
Bob: du coup ton vrai probleme c'est quoi ?
GDGiantDwarf: c'est ok de balancer du code dans le chat ?
Bob: oui
GDGiantDwarf: http://chat.codingame.com/pastebin/5a336833-cdb5-47c2-b514-e905670d69ad
GDGiantDwarf: c'est que les sorties correspondent pas a ce qui est attendu, mais j'ai pas la moindre idée de pourquoi, en lisant mon code je vois pas un instant ou le programme diffère de l'énoncé
GDGiantDwarf: à savoir, https://www.codingame.com/ide/puzzle/encryptiondecryption-of-enigma-machine
Bob: deja tu geres pas encode vs decode
Bob: c'est peut-etre voulu ?
GDGiantDwarf: oui, une chose a la fois
Bob: ok
GDGiantDwarf: une fois que j'aurais fait l'encode correctement
GDGiantDwarf: j'ai juste a mettre un bool, et a faire le programe a l'envers si on me demande de décoder
Bob: le premier test correspond a l'enonce
Bob: est-ce que tu as verifie que tu avais bien le resultat prevu a chacune des etapes ?
GDGiantDwarf: ça, je sais pas comment je pourrais le faire
Bob: bah tu affiches juste ton message apres chaque etape ?
GDGiantDwarf: oui, mais le test s'arrete au premier print incorrect, non?
Bob: oui mais
Bob: 1. tu peux afficher dans stderr
Bob: 2. au pire si c'est juste pour verifier tu t'en fous, tu mets ton print et tu l'enleves une fois que c'est correct
Bob: apres, a vue de nez je pense que ton souci c'est dans le apply_rotor
Bob: je te laisse trouver pourquoi ;)
GDGiantDwarf: bah, si comme tu me le dis, le premier test est correct, y'avais pas beaucoup d'autre options xd
Bob: ben disons que le premier test est detaille donc tu peux suivre
Bob: et verifier facilement les etapes
Bob: mais bon la j'ai fait du code qui passe le premier test mais pas le deuxieme :D
Bob: et qui, du coup, me permet de dire que tu auras aussi un souci au shift ;)
GDGiantDwarf: il est cassé mon shift?
CopperFr: ah tu l'as fait en powershell ?
Bob: tu verras le test #2, une fois que tu repare deja ton rotor pour le test 1
Bob: ensuite tu pourras reparer le shift pour le test 2 :D
GDGiantDwarf: tu me permet de te re-montrer mon code, je passe les tests 1, 2 et 4 , mais je suis pas certain de pourquoi je passe pas le 5
Bob: alors je passe pas le 5 non plus si ca peut te rassurer :D
char operation[257]; scanf("%[^\n]", operation); encode = (operation[0] == 'E');
GDGiantDwarf: une opinion sur ce bool d'arnaqueur ?
Bob: non c'est un vrai bool
Bob: il est tres bien
GDGiantDwarf: oui enfin, il abuse du fait que ce soit soit ENCODE, soit DECODE, jamais il gère une entrée différente
Bob: est-ce que tu peux avoir des entrees differentes ?
GDGiantDwarf: non, mon capichef
Bob: ben voila
Bob: donc ton code repond aux specs de la maniere la plus simple
b0n5a1: osef d'ailleurs ce code ne gère même que le 'E' première lettre de n'importe quoi...ça reste juste pour le sujet
Bob: si tu devais faire la meme chose pour une appli, oui bien sur tu feras un vrai strcmp vs encode/decode et un message d'erreur pour si tu as autre chose
Bob: mais la c'est juste un exo et les inputs sont bien cadres
b0n5a1: c'est un raccourci, mais valide
b0n5a1: en coc shortest ou en code golf typiquement t'exploites ce genre de truc
b0n5a1: code le plus court possible en clash of code par exemple
GDGiantDwarf: c'est validé, très bien alors :)
b0n5a1: ou les code golf : https://www.codingame.com/multiplayer/codegolf
CopperFr: donald trump en fait beaucoup du golf depuis sa défaite
b0n5a1: y'a marqué biden sur les balles ? ^^
Bob: arf ce piege avec les char signes
Bob: bon voila, 100 %
Bob: GDGiantDwarf du coup tu peux montrer ton nouveau code
GDGiantDwarf: donne moi une seconde, je suis en train d'écrie le décodage
GDGiantDwarf: bon apparement je segfault
GDGiantDwarf: atta, je regle ça et on es bon
for(int i = 0; message[i] && encode; i++)
GDGiantDwarf: je segfault sur ça
GDGiantDwarf: je comprends pas pourqoi
b0n5a1: stderr ton i...à mon avis tu sors des clous avec ça
GDGiantDwarf: si je passe par message[i] == '\0', la condition du for devient fausse, du coup je devrait sortir avant
b0n5a1: tu tapes "au delà" de la limite de message et ça contient rarement un 0
b0n5a1: int len = strlen(message) et met i < len comme condition
GDGiantDwarf: presque sur qu'un string donné par scanf se termine par \0
Bob: mais pourquoi tu mets encode dans ta condition ?
b0n5a1: bonne question...
Bob: ca serait pas plus simple et logique de faire if (encore) { /* algo encode */ } else { /* algo decode */ } ?
GDGiantDwarf: http://chat.codingame.com/pastebin/46ac553a-7d84-4309-9403-f5efd67ad519
GDGiantDwarf: http://chat.codingame.com/pastebin/dfd646c4-e4a2-459d-95ba-8ea942cde8f1
Bob: alors un truc qui va te sauver la vie
Bob: meme si tu n'as qu'une seule instruction apres un if/for/while, mets des accolades
Bob: toujours
Bob: meme si il te reste que 3 secondes pour sauver le monde et que les accolades en prennent 2
Bob: (c'est pas ca ton souci, mais je le dis en passant)
GDGiantDwarf: ça change quoi dans le cas des boucles conditionelles a une seule instruction?
Bob: ca change qu'un jour tu te feras baiser parce que tu vas rajouter une instruction et oublier de mettre les accolades
GDGiantDwarf: c'est vrai que ça serait pas la première fois
Bob: tu vois, ca t'est deja arrive :)
b0n5a1: tu verras le jour où tu sera pas réveillé et que tu va naivement croire que t'en ajoutes une seconde dans ta "boucle" :joy:
JohnnyYuge: Je plussoie Bob
Bob: les delimiteurs de bloc, c'est comme dire bonjour et au revoir, techniquement t'es pas oblige mais c'est juste de la politesse elementaire
Bob: et tres rarement il pourrait t'arriver des emmerdes si tu ne le fais pas
GDGiantDwarf: La ou je travaille, je suis obligé de répondre a des normes, parmis lequelle avoir des fonctions de moins de 20 lignes, du coup ce genre d'opti des fois je suis obligé
JohnnyYuge: Pour deux secondes perdue à mettre des accolades, tu t'épargnes des heures de debug dans 1 mois
CopperFr: je plussoie Bob aussi
Bob: OMFG
b0n5a1: erf
Bob: y a encore des gens qui metriquent le nombre de lignes de code ?
Bob: serieusement ?
b0n5a1: faut croire
CopperFr: apparement
Bob: et en comptant les accolades fermantes comme une ligne ?
Bob: non mais allo quoi
b0n5a1: surement Bob ^^
GDGiantDwarf: https://intra.epitech.eu/file/public/technical-documentations/epitech_c_coding_style.pdf
Bob: fly you fools
philRG: avec python pas besoin d'accolades. Avec PHP, on fait ce qu'on veut
CopperFr: oui c'est stupide
JohnnyYuge: Ca c'est de la connerie, faire de la métrique sur le nombre de ligne dans une fonction c'est des gens qui ont pas compris que les conventions c'est des guidelines pour être relativement propre, pas des règles que tu dois suivre aveuglément
b0n5a1: t'as fait 21 lignes c****d !!!!
b0n5a1: lol
GDGiantDwarf: moi jsuis d'accord, mais j'aime bien pas prendre -25% sur mon projet a cause de ça a:)
CopperFr: ah c'est un prof
GDGiantDwarf: ui, jsuis étudiant
JohnnyYuge: 20 lignes et 150 lignes par fichier c'est ça?
philRG: quoiqu'en php faut des accolades mais on écrire n'importe où tant qu'elles sont là :p)
b0n5a1: un vieux prof...qui a jamais connu autre chose que l'école...
philRG: peut
CopperFr: quand je dis qu'il y a des mauvais prof aussi
JohnnyYuge: De mémoire c'était ça qu'ils disaient chez Epitech
GDGiantDwarf: juis chez epitech mon frerot
JohnnyYuge: btw, t'as partagé l'intranet, on y a pas accès
b0n5a1: cela ne nous regarde pas...
JohnnyYuge: Y a pas de honte
GDGiantDwarf: bon, parmis les 250 erreurs de normes possible
GDGiantDwarf: il y a la longueur des fonctions
GDGiantDwarf: et la longeur des fichiers
b0n5a1: 8 chars pour un nom de var ou de fonction...
b0n5a1: alors...toutes les "docs" avec marqué 1980...tu les brûles ! :grinning:
GDGiantDwarf: pour le coup on a pas vraiment de restriction sur les nombre de charactères pour les variables
b0n5a1: vous êtes sous un vieux windows avec les fichiers en format 8.3 aussi ?
GDGiantDwarf: a part qu'elle doivent etre explicite, et que tes lignes de codes doivent pas faire plus de 80 colones
philRG: On étudier un peu les sciences théoriques avant de se lancer dans la pratique
b0n5a1: et passez sous edit de dos pour coder ?
philRG: faut
GDGiantDwarf: bon on arrete de troller les copains
GDGiantDwarf: j'ai toujours mon segfault qui a besoin d'aide
philRG: oui
Bob: des lignes a 80 colonnes ?
Bob: en 2020 ?
GDGiantDwarf: il semblerait, mon capichef
b0n5a1: question conne GDGiantDwarf...est ce que ton tableau message est assez grand dès le départ ?
Bob: a une epoque ou on a a peu pres tous des ecrans qui font du 1920x1080 ?
scanf("%[^\n]", message);
b0n5a1: ouille
Bob: bon remontre voir ton code ?
b0n5a1: bin voilà l'erreur
GDGiantDwarf: http://chat.codingame.com/pastebin/0f98a53f-d477-4044-ba4c-4c8abd2ab3f5
b0n5a1: char* message t'es mort
Bob: j'avis vu un truc qui m'avait fait tiquer tout a l'heure
Bob: ah ben oui si t'alloues pas ton message, deja...
b0n5a1: alors soit tu fais un maloc qui va bien soit tu fait un char[256] par exemple
Bob: apres, la condition de ton unshift est double-fausse
b0n5a1: si tu malloc, free à la fin
Bob: enfin toute la ligne de for
GDGiantDwarf: http://chat.codingame.com/pastebin/3c54ae5e-a84f-4c48-8541-85225d3aa3d1
GDGiantDwarf: a part pour le test 5, toujorus
Bob: eh ben t'as bien de la chance
philRG: beau code :)
b0n5a1: ça marche par accident
Bob: pour ce qui est du test 5, je t'invite a afficher ton message en fin de shift
GDGiantDwarf: beaucoup de choses dans ma vies sont des accidents
GDGiantDwarf: c'est a dire en fin de shift ?
b0n5a1: ton char* message est tombé en marche
Bob: une fois que tu as shifte tout ton message
GDGiantDwarf: http://chat.codingame.com/pastebin/b4a891d5-7341-40c0-ad96-8380029f563c
Bob: logiquement tu devrais avoir une surprise :)
Bob: non pas apres le rotor, apres le shift
b0n5a1: t'as eu de la chance de pas taper "trop loin" en mémoire plein de fois sauf quand ça fait *pouf*
Bob: fprintf(stderr, "%s\n", message)
philRG: j'ose pas partager mon code python, mais c'était un puzzle sympa
philRG: bravo
GDGiantDwarf: et comment je la lis, moi, ma sortie d'erreur?
Bob: c'est dans la "console" de CG
b0n5a1: avec tes yeux
Bob: je prophetise qu'a la sortie de ton shift tu as un caractere autre que A-Z dans tojn message
Bob: a toi de trouver pourquoi :)
GDGiantDwarf: oui mais alors du coup
GDGiantDwarf: elle est ou cette console
b0n5a1: GDGiantDwarf ma mian à couper que dans le stub de départ par défaut y'avait un char[qqchose] et pas cahr* pour message non ?
Bob: t'as pas un truc intitule "Sortie console" en bas a gauche ?
b0n5a1: c'est la même fenêtre que celle de sortie GDGiantDwarf...ça s'affichera en rouge
Bob: de la fenetre CG
GDGiantDwarf: mais vu que je veux ecrire dans message, le format[] marche pas
Bob: ?
GDGiantDwarf: @bob si, mais je peux pas interagir avec
b0n5a1: ?
Bob: tu ne peux pas interagir avec mais tu auras stdout et stderr dedans
Bob: la difference etant que le validateur ne lit que stdout
Bob: donc tu peux mettre toute l'info de debug que tu veux dans stderr
Bob: (enfin dans une certaine limite si tu en mets trop c'est tronque)
b0n5a1: GDGiantDwarf 10:51AM mais vu que je veux ecrire dans message, le format[] marche pas
-> bien sur que si ...message[i] = 'E' c'est valide
philRG: fprintf(stderr, "Debug messages...\n");
b0n5a1: mais dans un char* message pas alloué ça va te péter à la tête par contre
Bob: voila
philRG: ouiiii
GDGiantDwarf: message[3] = "ABC"; message = "DEF"; ça marche pas frerot
Bob: ca non
b0n5a1: normal c'est faut ce code GDGiantDwarf
Bob: mais parce que c'est pas comme ca qu'on affecte une string en C
b0n5a1: faux*
Bob: ca n'a rien a voir avec scanf et les questions d'alloc
philRG: l'assignation fonctionne pas avec des strings en C?
Bob: non
Bob: parce que y a pas de string en C, en tant que tel
philRG: exact faut strcopy
Bob: tu as des pointeurs vers char et c'est tout
philRG: vive le C, franchement, au moins on sait de quoi on parle
Bob: ah ben ca oblige a etre precis et rigoureux
Bob: c'est pour ca que c'est un excellent langage d'apprentissage
GDGiantDwarf: ma console me donne que la sortie standart
philRG: moins en python souvent je suis perdu dans les portées, je sais jamais si c'est une référence ou paramètre
Bob: c'est pas le plus pratique a manipuler mais une fois que tu t'en es sorti, tu sais ce que tu fais
philRG: à cause de l'objet
philRG: c clair
Bob: tu mets bien des \n dans tes stderr ?
Bob: sinon c'est pas flushe
b0n5a1: c'est que ça pète avant ton printf stderr, ou que tu passes pas par l'appel
Bob: en tout cas pour scanf
Bob: scanf("%s\n", message), ca lit une string et ca la memcpy dans message
Bob: point
Stilgart: Bob: même avec \n il faut flush
Bob: si message ne pointe pas sur de la memoire allouee et/ou n'a pas la place suffisante, t'es mal barre
Bob: au mieux ca fonctionnera par accident
b0n5a1: ouais Stilgart c'est préférable
Stilgart: il n'y a rien qui te garantit que \n => flush (même si c'est très souvent vrai)
philRG: Bob le fils de mon copain est en 2ème année à l'EFREI, il aime bien le C, beaucoup moins le python
b0n5a1: c++ ça l'est pas ça flush auto sur buffer full ou endl
philRG: pour apprendre c top
Stilgart: b0n5a1: j'suis même pas sûr pour endl
Stilgart: (en vrai, c'est une connerie de le faire)
b0n5a1: si endl force le flush...c'est pour ça que c'est environ 50% plus lent si tu fait que du endl au lieu de "\n" sur masse de "petites chaînes"
Stilgart: philRG: bah oui, le C c'est 100 fois plus simple
b0n5a1: (c'est documenté)
Stilgart: b0n5a1: c'est vraiment dans le standard ?
b0n5a1: oui
b0n5a1: endl ça flushe
philRG: Stilgart: en fait oui, avec les struct, pas besoin d'objet
Stilgart: philRG: c'est même pas ça
philRG: ou c les typedef en C, struct c'est C++
b0n5a1: Stilgart https://en.cppreference.com/w/cpp/io/manip/endl
Stilgart: en C, tu es obligé de déclarer ta variable, de l'initialiser, toussa
Stilgart: sinon ça compile pas
Stilgart: en python, tu oublies une init, ça marche quand même et tu passes 1h à trouver la connerie
Stilgart: (vécu en TP niveau L1)
GDGiantDwarf: bon j'ai réussi a l'avoir ma sortie d'erreur
philRG: Stilgart: je le vis à chaque contest :o)
GDGiantDwarf: elle est pas ouf quand meme
GDGiantDwarf: et le seul cas ou message contient un truc qu'est pas une lettre
b0n5a1: typiquement je mets que du "\n"...et éventuellment un endl à la fin (si flux pas fermé et flushé)...
philRG: Stilgart: j'évite de coder en python quand je suis fatigué ou migraines, j'arrive pas à debugger
GDGiantDwarf: le malloc change rien
laPetiteGrenouille: Salut ! comment doit on faire si on pense qu'il y a une erreur dans un exo svp (du genre un input buggé :))
b0n5a1: tu alloues combien aussi ?
CopperFr: Stillgart: J'évite de coder en python
b0n5a1: GDGiantDwarf et y'avait combien dans le stub de départ (ou voir limite de l'énoncé) ?...tu mets limite annoncée + 1 pour être tranquille
GDGiantDwarf: c'est ce que j'ai fait :)
**Stilgart s'est senti obligé de check n3337.pdf
b0n5a1: bah vérifie tes "i" dans stderr...voir si tu tapes pas eb dehors
Stilgart: b0n5a1: tu sais si c'était déjà le cas en C++ < 11 ?
Stilgart: pour le flush sur endl ?
Stilgart: ça l'est en C++ >= 11 en tout
JBM: j'ai pas le souvenir que ce soit qqch qui ait changé en 2011 ça
JBM: ah mais c'est ce que tu dis
b0n5a1: hmm de mémoire oui Stilgart...j'ai changé le code d'un collègue (dump dans un fichier) en remplaçant endl par "\n" partout...temps d'exec quasi divisé par 2 il y a pas mal de temps
Stilgart: j'ai pas souvenir que c'était vrai quand j'ai commencé à coder :(
JBM: pour moi c'est là depuis le début
b0n5a1: mais pas sûr c'était peut être déjà du 14
b0n5a1: mais àma c'était le cas
Stilgart: mais peut-être que c'était mon environnement qui suivait pas le standard aussi
Stilgart: (99)
JBM: ou que t'as jamais fait attention?
JBM: ça change pas la vie de grand-monde
JBM: tu te dis juste "mmm c'est plus lent que le C c'est la faute aux classes"
Stilgart: b0n5a1: oui, le flush ça fait très mal
Stilgart: JBM: non, j'ai souvenir d'avoir du mettre flush
Stilgart: mais bon, peut-être que j'avais pas de endl aussi :D
b0n5a1: après changement ça flushait sur buffer full et à fermeture de flux ^^
b0n5a1: et dans certains cas speed x 3 sans problème tellement ça dumpait que qq chars par ligne
b0n5a1: voire x plus me souviens plus trop
philRG: finalement je vais me remettre au C sur CG, les autres syntaxes me fatiguent
Stilgart: mets toi au Haskell
**Stilgart sort
CopperFr: :D
philRG: j'ai essayé j'ai bien capté le live de JBM sur OOC, car il avait nommé son île archipelago, jeu de société créé par mon frère
CopperFr: faut se mettre au rust
philRG: après j'ai été perdu
philRG: j'aimerais bien me mettre à la programmation fonctionnelle, mais ça demande un peu d'effort
Stilgart: faut voir ce que tu recherches vraiment
Stilgart: parce que les expériences sont très différentes entre Haskell, OCaml, Clojure...
b0n5a1: bin c'est clair que quand t'as été formaté à autre chose pendant longtemps...le fonctionnel c'est sur le coup "pas naturel", ça cahnge un peu toute la réflexion
Stilgart: et Scala (voilà, c'est lui que je cherchais)
Stilgart: c'est de moins en moins vrai
b0n5a1: les 15 puzzles OCaml typiquement j'ai "triché" en usant des IORef ^^
philRG: j'aime bien l'objet pour la beauté, mais ça rajoute pas forcément en concision de code
Stilgart: parce que les autres langages ont de plus en plus de traits fonctionnels
Stilgart: l'object seul ça multiplie la taille de code par 2-3
philRG: j'ai eu du mal à passer du C à l'objet tout de même
**Stilgart se contente très souvent de struct en C++
b0n5a1: si un ocamleux voit mon code ocaml pour les 15 puzzles il pète un plomb je pense ^^
Stilgart: nan, Boulet a l'habitude de mes codes en ocaml, il sait souffrir en silence maintenant :D
**Stilgart devrait faire un putsch, reprendre le cours, et basculer à Haskell
b0n5a1: je peux te faire souffir avec mes puzzles Haskell sinon :joy:
philRG: après je suis pas un expert du code non plus. Mon frère lui est passé sur Swift facilement, mais c un guru du code, a bossé dedans longtemps
b0n5a1: quoique y'en a un ou deux ça va
philRG: un collègue m'avait recommandé ocaml comme j'aimais pas trop le code
Stilgart: en Haskell, au début, c'est surtout rendre le code visuellement beau qui me posait soucis
philRG: mais bon
b0n5a1: (pas pour rien qu'il m'en reste 5 à faire)
Stilgart: ocaml c'est pas super je trouve
Stilgart: ça reste un outil pédagogique à la base
b0n5a1: si y'a les ioref ^^
**b0n5a1 s'enfuit
Stilgart: (ou là tu peux faire des trucs)
Stilgart: b0n5a1: c'est une façon de faire
Stilgart: j'ai des IORef dans ma solution de sokoban
Stilgart: et j'aurais du en avoir dans celle de space maze
philRG: oui c ça, développer le moteur du jeu, puis définir des fonctions intuitives pour le gameplay. Un peu comme quand tu joues à un jeu de société
b0n5a1: je crois que je dois avoir un seul truc Haskell "propre", qui fait une ligne ^^
Stilgart: héhé
Stilgart: main = interact $ format . solve . parse
Stilgart: best last line pour les puzzles
Bob: GDGiantDwarf t'en es ou du coup ?
Bob: (flemme de remonter le log du chat)
b0n5a1: ha, j'ai sum of divisors qui semble pas trop ouer aussi
b0n5a1: puer*
b0n5a1: et j'ai mis un moment à trouver la ligne en me tapant des tutos ^^
b0n5a1: une petite heure facile
CopperFr: facile l'AoC day 3 :D
Bob: oui ils sont faciles la je trouve
Bob: j'ai commence ceux de l'an dernier, ca demande immediatement plus de taf
CopperFr: ah oui tu les fais en powershell
Bon[]Crayon: Bonjour tout le monde :smiley_cat:
Bon[]Crayon: Salut la tortue Automaton2000
Bon[]Crayon: Salut le robot AutomatonNN
Automaton2000: le temps de faire le tour de la map
AutomatonNN: oui
Bon[]Crayon: Automaton2000 Tu as pris ton temps comme une tortue.
Automaton2000: bien pour ca que j'ai pas de pb
Bon[]Crayon: Automaton2000 GG
Automaton2000: j'ai l'impression de tourner en rond
ZacDonald: Qq pour m'expliquer un truc sur mon code ou non ?
CopperFr: ca dépend
Bon[]Crayon: tu as un bug, qu'il faut corriger.
ZacDonald: c'est pas vraiment un bug c'est juste quelque chose que je comprend pas
Bon[]Crayon: Vas-y
ZacDonald: je ne vois pas le déroulement du code comme il se déroule lui
nicola: Quel puzzle ?
ZacDonald: je sais pas si c'est compréhensible mdr
ZacDonald: https://codeshare.io/29lxw0
ZacDonald: Pour ceux qu'il veulent bien m'aider
ZacDonald: question : pour le vector mySample a une taille > 0 dans l'ETAT laboratory une fois que j'ai déposé mon sample
ZacDonald: alors que pourtant je n'en porte plus en main
Bon[]Crayon: Je ne connais pas ce puzzle.
Bon[]Crayon: Tu veux savoir pourquoi ce vector est toujours plein ?
dbdr: ZacDonald: front ça renvoie une ref vers l'element, ça le retire pas, il me semble
Bon[]Crayon: OUi c'est ça
Bob: je confirme
CopperFr: oui je pense aussi
Bon[]Crayon: c'est pop_front()
Bon[]Crayon: mais pas sur un vector
CopperFr: ca existe pas
Bon[]Crayon: Il faut une list ou deque par exemple
Bob: mais as-tu vraiment besoin de faire un pop ?
CopperFr: Freebox pop ?
Bob: tu fais ton connect pour poser ton sample, apres tout suivant et c'est reparti
Bob: accessoirement, le currentState tu n'as pas besoin de le gerer toi-meme, il t'est donne en input
Bob: c'est la valeur target pour ton joueur
Bob: et la valeur eta t'indique si tu es en cours de deplacement (>0) ou arrive (==0)
CopperFr: arrêtes tu va lui faire peur
Bob: en gros si eta > 0 tu peux juste faire WAIT
Bob: bah c'est lui qui a demande hein :p
CopperFr: il a posé qu'une question
Bob: pas grave, ca :p
Bob: il repart avec plusieurs reponses, c'est cadeau
dbdr: ce n'est pas sa question, mais c'est la réponse de Bob quand même
b0n5a1: faut trouver les questions qui vont avec, nouveau jeu
CopperFr: c'est geopardy
CopperFr: (Jeopardy!)
dbdr: https://www.youtube.com/watch?v=d0bkjzzwyyw
Bob: moi apres je dis ca, c'est pour aider :)
Bon[]Crayon: La réponse courte, c'est il faut revoir ta stratégie de jeu ?
CopperFr: c'est de la m comme disait Jean-Pierre Coffe
Guinsoo: prince :O
CopperFr: of persia ? ou de lu ?
Guinsoo: of persia
Guinsoo: J'ai fini the shadow and the flame :D
CopperFr: tu peux aussi manger des prince de lu en même temps
Bob: pour moi ce sera of darkness plutot
Bon[]Crayon: Je viens d'apprendre un truc.
Bob: c'est pas trop tot
Bon[]Crayon: Un anagramme de police c'est picole.
Bob: :D
CopperFr: normal quoi
Bob: coincidence ? Je ne crois pas
b0n5a1: pfff prochain day aoc je passe direct en uint64_t...ça me fera rien changer ^^
CopperFr: ???
b0n5a1: part 2 j'avais moins beaucoup
CopperFr: tu parles de l'exo d'aujourd'hui ?
b0n5a1: mais à cause d'une connerie
CopperFr: ah oui à cause du produit
b0n5a1: ouais
CopperFr: j'ai eu bon sans souci en js :D
b0n5a1: double par défaut non ?
CopperFr: oui c'est d'ailleurs un inconvénient pour les perfs
CopperFr: enfin j'imagine
b0n5a1: bon 32 bits non signé aurait suffit sur mon jeu de test en fait
Guinsoo: "Reach the Legend league in any game" Okay j'abandonne
CopperFr: il suffira d'un signe
b0n5a1: mais sur les jours suivant je vais tout de suite partir sur le fait qu'un gros résultat est attendu
CopperFr: ben moi je vais continuer en js
b0n5a1: en fait j'ai eu un piège à con
b0n5a1: j'ai écrit : cout << accumulate(treeCounts.cbegin(), treeCounts.cend(), 1, multiplies<uint64_t>()) << "\n";
b0n5a1: au lieu de cout << accumulate(treeCounts.cbegin(), treeCounts.cend(), 1ull, multiplies<uint64_t>()) << "\n";
b0n5a1: (subtil...)
b0n5a1: 1 -> 1ull
CopperFr: j'ai fait answer *= trees :D
Bob: un vieux reduce et c'est marre
CopperFr: j'ai pas stocké les résultats
b0n5a1: par défaut c'est int...1 est int...ça m'a tout foutu en int...piège à con
Bob: moi non plus
Bob: slopes.reduce((total, [slopeX, slopeY]) => total * nbTrees(data, slopeX, slopeY), 1)
CopperFr: ah oui intéressant
CopperFr: for(let {dx, dy} of slopes) :D
b0n5a1: ouais pas besoin de stocker...mais quand ça merde à cause d'un bug t'as tous les intermédiaires dans l'espion du vector
b0n5a1: (pas eu de bug mais bon)
CopperFr: ca risquait pas de merder un truc aussi simple
Bob: il ne faut jamais sous-estimer le potentiel de merdation
b0n5a1: t'as pas vu ma boulette initiale CopperFr
b0n5a1: cumulWidth *= 2 au lieu de += width :joy:
CopperFr: déjà faire du c++ pour ce genre d'exo tu va forcément y passer plus de temps
CopperFr: je me souviens d'un tp avec un prof il disait que les éléves mettaient moins de temps à faire son tp en pascal
CopperFr: par rapport au c
b0n5a1: ha ouais ça grandit plus vite que la normale là....
CopperFr: du coup avec mon binome on l'avait en pascal
CopperFr: on a fini 1h avant tout le monde
CopperFr: on c'est barré :D
Bon[]Crayon: C'est coup de la tortue.
b0n5a1: et vous avez eu 10/20 parce que vous avez pas vu l'exo 2 au verso de la feuille....
CopperFr: c'était même pas noté
b0n5a1: y'a un mec qui a fait cette connerie une fois, il se la pètait...jusqu'au moment où tout le mode parlait de l'exo 3 (ou un truc comme ça)
CopperFr: (et pas d'exo 2 non plus)
b0n5a1: heuu...quel exo 3 ??? :joy:
b0n5a1: il est devenu tout blanc quand il a compris
CopperFr: c'est dommage pour lui mais rien à voir avec moi :D
Bob: mon prefere c'est un copain qui s'etait exclu de lui-meme de son groupe de projet parce qu'il y avait dedans une nana dont il etait secretement amoureux
b0n5a1: c'est un coup à développer un TOC à retourner toutes les pages que tu croises le restant de ta vie ^^
Bob: et qu'il etait trop timide pour juste bosser avec elle, ou un truc du genre
Bob: du coup le groupe n'avait pas mis son nom sur le projet et il avait pris un 0
CopperFr: ah c'est dommage pour lui mais rien à voir avec mo :D
Bob: mais comme le copain en question etait aussi le modele qui ne lit pas la feuille donnee en debut d'annee et qui donne les coefficients des matieres
Bob: "parce que je ne veux pas que ca oriente mes efforts vers une matiere ou une autre"
b0n5a1: coeff 8, booum
Bob: mieux que ca
CopperFr: ah c'est dommage pour lui mais rien à voir avec moi :D
Bob: "TP non rendu = 0 eliminatoire pour les sessions de juin *ET* septembre"
b0n5a1: arf
Bob: la petite ligne qu'il n'avait pas lue
CopperFr: et elle était bien la fille au moins ?
b0n5a1: elle était de l'autre bord...fail ^^
b0n5a1: double fail
CopperFr: ah ca peut arriver aussi :D
Bob: sais pas
CopperFr: ah tu l'a jamais vue
Bob: j'ai du la croiser quelques fois mais c'etait il y a 25 ans je peux pas dire que je me souvienne
CopperFr: ca veut tout dire :D
Bob: de ce qu'il m'a raconte je comprends qu'elle l'aimait bien aussi mais qu'elle attendait qu'il se bouge un peu le cul :)
b0n5a1: ça me rappelle 2 copines qui arrêtaient pas de m'empêcher d'aller discuter avec une en me disant "arrête, laisse tomber"....ça me faisait marrer je croyais que c'était de la jalousie...jusqu'au moment où elle m'ont pris de force pour m'éloigner et m'expliquer la vraie raison ^^
Bob: ce que lui n'a jamais compris et/ou reussi a faire :)
CopperFr: dommage c'est triste :(
CopperFr: on pourrait peut-être en faire un téléfilm pour France télé ?
philRG: Des fois on savait même pas quand les dates de convocations aux oraux étaient affichées
Bob: CopperFr en pratique ce gentil garcon pourrait remplir le programme de toute un lot d'emissions de tele-realite
CopperFr: ah d'accord
Bob: tres gentil au demeurant mais desesperement inapte a se prendre en main pour mettre un peu d'ordre et de bon sesn dans son existence
Bob: associe a un certain manque de bol qui fait que chaque fois qu'il arrive a trouver le courage d'essayer il lui tombe sur le coin de la gueule une merde qui l'enfonce un peu plus
b0n5a1: pourtant le maître avait mis en garde Bob : https://i.pinimg.com/originals/32/72/23/3272233fb5a828c4d72d275da5da984d.jpg
Bob: bah c'est meme pas qu'il se fait enfumer parce que trop gentil
Bob: juste qu'il mnanque d'energie pour affronter les problemes de l'existence
antoineok: quelqu'un sais comment passer le validateur "Fichier complet 2" sur le puzzle defibrilator?
antoineok: ceux de l'ide passent super bien
antoineok: mais pas sur le rapport
Bob: reponse courte : en corrigeant le bug que tu n'as pas vu dans ton code, sans doute
Bob: pour en dire plus, faudrait voir le code
antoineok: je peux poster un lien hastebin ici?
Bob: essaye, tu verras bien si tu exploses :)
antoineok: https://hasteb.in/kubiloqu.js
Bob: si tu exploses, c'est que tu pouvais pas
antoineok: je peux optimiser ca un peu plus en suppriment 2 variables un peu inutile
Bob: oh c'est sans doute pas ca qui doit te poser souci
pyTom-programming: salut avez vous un bon probleme pour s initier aux algorithme génétique svp ?
Bob: pyTom-programming : code vs zombies
Bob: antoineok : peut-etre un souci au niveau de ton cos
Bob: tu as mis userLatitude + latitude/2
Bob: qui est userLatitude + (latitude/2)
Bob: alors que la formule donnee est (userLatitude + latitude)/2
pyTom-programming: bah sinon j ai mars lander il est pas mal
antoineok: ce serait plutot (userLatitude + latitude)/2
Bob: avec un peu de bol c'est le genre de bug vicieux qui peut passer ou pas en fonction du jeu de test
Bob: pyTom-programming mars lander c'est bien aussi mais le moteur de jeu est un peu plus chiant
Bob: antoineok : j'ai eu du mal a le voir, dans ma version de defib j'ai vire le cos :D
Bob: les emplacements sont tellement proches que (latA+latB)/2 c'est virtuellement constant
Bob: mais bon ca c'est du dirty trick
pyTom-programming: bah en fait je fais un programme en python pour le simuler
CopperFr: dirty trick done dirt chip
Bob: chip chip :bird:
JohnnyYuge: Ca m'avait manqué de débattre deux heures sur des choix d'utilisation de patterns
JohnnyYuge: (faux)
Bob: bah deja vous debattez
Bob: surtout, est-ce que vous arrivez a une decision non equivoque a la fin ?
JohnnyYuge: A la fin on arrive sur la conclusion que JohnnyYuge avait raison depuis le début comme toujours
Bob: chez moi c'est plutot "ouais ici on fait completement differemment de la mais on n'a pas le temps de debattre pour arreter une maniere et standardiser"
Bob: donc a l'arrivee t'as un bon gros bordel
JohnnyYuge: En vrai, y a 2-3ans je serais arrivé en mode gros sabot de sortie d'école "J'ai appris qu'il faut coder comme ça, alors je vais coder comme ça"
JohnnyYuge: Maintenant, j'ai toujours mes "idéaux" de code, mais je m'adapte.
JohnnyYuge: Genre, on code en VB qui gère l'inférence de type (comme auto en C++ ou var en c#), mais on l'utilise pas pour des raisons de clarté pour les gens qui ont des profils plus mathématiques dans la boite
JohnnyYuge: Je suis facile à convaincre sur les conventions xD
Bob: l'inference de type j'aime assez mais ca peut avoir ses mauvais cotes aussi
Bob: bon ok c'est surtout piegeux quand on fait de la merde :D
JohnnyYuge: Quand le type est généré par une fonction mal nommée, ouais c'est le zbeul
Bob: en TS tu as les fonctions dont le type de retour est infere par ce que tu retournes effectivement
Bob: du coup tu oublies que t'as paste un bout de code d'ailleurs avec un early return; dans un coin et d'un seul coup ta fonction renvoie Foo | undefined au lieu de Foo
Bob: et un bout de ton code ailleurs ne checke plus
Bob: mais en vrai si tu types ta fonction des le depart, ca pete au moment ou tu pastes ton code
Bob: mais c'est clair qu'en C++ c'est tellement agreable de faire const auto& foo = machin.first();
Bob: plutot que const WhateverTheFuckingTypeIsNamed& foo = machin.first();
JohnnyYuge: A l'inférence de type retour de function, ça j'évite
JohnnyYuge: J'aime bien le fixer dans le prototype
Bob: ouais il vaut mieux
Bob: a part eventuellement sur des one-liners triviaux
JohnnyYuge: Agreed
Bob: le set de regles d'eslint pour TS inclut un truc du genre "si c'est exporte, ca doit etre completement type"
Bob: ce qui me semble assez raisonnable
tekki: yop tlm et AutomatonNN
AutomatonNN: idem
tekki: comment va Automaotn2000 AutomatonNN?
AutomatonNN: https://www.codingame.com/replay/306492498
JohnnyYuge: C'est une dinguerie eslint
Bob: chez moi c'est un eternel sujet d'affrontement
Bob: au depart on etait sur tslint
Bob: j'ai fait le portage a eslint apres la deprecation
sanpas83: AutomatonNN Erreur 404 :o
AutomatonNN: si tu veux pas détecter le contest j'ai pas du tout passer le bas de la wood 2 :p
Bob: mais du coup les presets ne sont plus les memes etc
tekki: haha courageAutomatonNN
AutomatonNN: ouai c'est pas trop compliqué de te plaindre de toutes la vache comme la communauté de l'école
Bob: et le chef voudrait retrouver exactement la config qu'on avait avant avec tslint
Bob: notamment de tout passer en error par defaut, ce qu'eslint ne permet pas
PhOeNyX: De rien [CG]Thibaud :D
Bob: parce que pour lui juste avoir l'IDE qui est blindee de highlights et faire confiance au dev pour les corriger, ca ne suffit pas
tekki: pauvreBob
tekki: tjs pas changé de taf?
tekki: tu vaux mieux que ça :)
Bob: pas encore mais on y vient
tekki: AutomatonNN une chanson stp
AutomatonNN: ou alors t'as pas un bit pour le prochain contest ?
sanpas83: eternel envie de chef :) toujours comme avant c’était mieux
sanpas83: AutomatonNN plusieurs bit la chanson
AutomatonNN: use ton temps de contest t'as pas le droit de me faire perdre des problèmes de contest avec les algo
tekki: merci AUtomatonNN
AutomatonNN: on prend trop de temps pour savoir qui a des problèmes de temps en temps pour le prochain contest de
[CG]Thibaud: nice PhOeNyX , je regardais justement ce matin (suivant ton message sur le boss silver de calm) que j'étais en haut de la ligue Gold
tekki: et sinon tu te reposes AutomatonNN?
AutomatonNN: vente ton propre contest ?
PhOeNyX: Je pense que je passe légende sur ce push
tekki: !Automaton2000 une réclamation?
Automaton2000: oui c'est le problème avec le puzzle de la semaine dernière
PhOeNyX: à moins d'une grosse série de défaite en partant de 97%...
PhOeNyX: Tiens j'ai push accorp et JeremyV aussi
PhOeNyX: Et Biwere juste avant
[CG]Thibaud: c'est bon ça
tekki: ça push sur quoi?
PhOeNyX: et fun fact, why_not_me n'est pas pushed
PhOeNyX: pseudo en accord avec les faits
PhOeNyX: Code à la Mode
[CG]Thibaud: ahah
dbdr: haha, "username checks out" en français :)
dbdr: gg PhOeNyX
tekki: gg
tekki: gg AutomatonNN
AutomatonNN: oui mais c'est pas trop la forme de la triche
tekki: AutomatonNN une bonne nouvellle?
AutomatonNN: oui
dbdr: [CG]Thibaud: faut dire aux devs que c'est pas du boulot: https://i.snipboard.io/xnNSvE.jpg ;)
[CG]Thibaud: j'ai pas compris
dbdr: c'est un détail technique sur la représentation des matchs nuls
[CG]Thibaud: ah
dbdr: dans last battles, ça donne rank = [0, 0], ce qui permet au viewer d'afficher le #1 #1
dbdr: mais dans d'autres bouts de l'API, ya [0, 1], meme en cas de match nul
[CG]Thibaud: ah ouais c'est chelou
dbdr: pas consistant ni pratique
dbdr: enfin ça se recalcule à partir des scores
dbdr: c'est juste un petit désagrément
dbdr: (ou facile de se planter dessus et de mal interpréter)
DPAmar: je me posais une question : avec le bot slack CG, y'a moyen de réinitialiser le leaderborad ?
[CG]Thibaud: je ne crois pas
[CG]Thibaud: la seule façon est de réinstaller le bot Slack DPAmar
DPAmar: c'est ce que je viens de faire en effet :)
JBM: j'ai dû revérifier ça m'a collé le doute, mais non j'ai pas d'IORef dans mon SoKoBan
ltDan: y a un moyen de détacher cette fenetre de chat ?
Khyf: Oui, petite flèche en bas à gauche.
ltDan: pas de masquer
ltDan: de détacher
ltDan: pour avoir une fenetre à part
ltDan: plutot qu'une colonne minuscule
JBM: cherche le topic de blaiseebuth sur le sujet dans le forum
JBM: il a fait un truc du genre
pyTom-programming: qui connait mars lander ?
Stilgart: /topic posez directement votre question les gens :)
Stilgart: pyTom-programming: moitié de ce chat au minimum
Stilgart: dbdr: tu le sors d'où ce match ?
Stilgart: (on dirait moi à langton wood 4 :fearful: )
dbdr: Stilgart: quoi, le nul? pourquoi?
Stilgart: par curiosité
Stilgart: (et oui, le nul qui donne [0,1]
Stilgart: )
dbdr: c'est soit un match d'arene, soit un match IDE joué par api
Stilgart: j'aurais du être précis... c'est sur quel multi ? :)
dbdr: ah, FC multi
Stilgart: ok
dbdr: il suffisait de taper le gameId pour savoir ;)
Stilgart: je connais pas cette API :(
dbdr: https://www.codingame.com/replay/$gameId
Stilgart: et comment il était énorme ce gameId, je pensais pas que ça correspondait au multi
Stilgart: (qui doit aussi avoir un id de puzzle en 3-4 chiffres)
dbdr: les gameIDs sont consécutifs globalement, il me semble
Stilgart: ha... ce gameid
dbdr: oui, ça devrait s'appeler matchId
**Stilgart va fix son connaissance de l'API
Zorg1: bsr
BlaiseEbuth: asv
Stilgart: tortue
BlaiseEbuth: Porte-monaie Steam : 6.66 € Perfect
Stilgart: gg
Stilgart: 4.21€ ici :(
BlaiseEbuth: Ah bah t'as gagné ^^
Stilgart: remarque, c'est pas mal non plus comme score
Stilgart: :D
**Stilgart n'avait pas tilté au début
Stilgart: après, j'aurais vraiment gagné le jour au j'arriverai à faire dire tortue à Automaton2000
Automaton2000: c'est quoi le mieux pour toi
Stilgart: Automaton2000: là, tout de suite, maintenant
Automaton2000: mais le mieux c'est de prendre un peu de mal a comprendre ce que tu faisais
dwarfie: Automaton2000 ... j'invoque la tortue pour faire rager Stilgart ...
Automaton2000: ca a l'air d'etre le cas
dwarfie: :D
Stilgart: Automaton2000: si tu mettais autant d'énergie à dire tortue qu'à me troller, on ne saurait plus quoi faire des cadavres de carapaces :/
Automaton2000: je sais même pas si le referee est en java
Louis700: Salut
Louis700: Y'avait pas un probleme sur le machine learning a un moment ?
Louis700: Tensorflow il me semble
dwarfie: disparu
Louis700: Ouch
Louis700: Dommage
Louis700: J'aurais adore le faire :)
dwarfie: en meme temps , c'etait juste copier-coller la doc
Louis700: Ca explique le truc alors
Louis700: Y'a rien d'autre qui l'a remplace du coup ?
dwarfie: non
Louis700: Ok
Louis700: Merci
Bon[]Crayon: En c++ le compilateur considère 1E2 comme un double
Bon[]Crayon: INVOKE automaton2000 RETURNING turtle2000 MOVE turtle2000 TO goal
Automaton2000: c'était pas si dur que ça à faire
Bon[]Crayon: Automaton2000 ça m'a pris 2000 minutes.
Automaton2000: je suis toujours en wood 3
Zorg1: ok on sait que tu peux le faire Automaton2000 maintenant fais le !
Automaton2000: moi non plus, je suis en train de monter un peu
Bon[]Crayon: Automaton2000 Rien ne sert de courir, il faut partir à point :turtle:
Automaton2000: je sais bien, c'est pour ça que les gens qui font des trucs qui sont pas dans le classement
Zorg1: AutomatonNN t'en es où dans ton contest (de constest)+ ?
AutomatonNN: oui
Zorg1: d'accord AutomatonNN
AutomatonNN: osef de ressemble a quelqu'un saurait autre chose que le temps de repondre sur le prochain contest ?
Zorg1: c'est dans six mois le prochain contest
Zorg1: AutomatonNN
AutomatonNN: voilà
Stilgart: AutomatonNN: ça te laisse le temps d'apprendre le mot tortue à ton frère
AutomatonNN: ouai je connais pas trop le contest de comment tu peux faire une descente de la boite avec un exerci
Zorg1: une descente de la boîte ? avec FoW ? ça pourrait faire un chouette contest AutomatonNN ...
AutomatonNN: oui
Zorg1: :thumbsup:
Stilgart: Zorg1: tu parles d'un contest où c'est toi qui descend des boites ?
Zorg1: j'en sais rien je me met dans une optique brain storming, trouver des idées à partir des phrases saugrenues des deux bots ^^
b0n5a1: Recher : vodka !
b0n5a1: stoi le saugrenu, pas les bots
b0n5a1: hein Automaton2000
Automaton2000: mais ça va prendre du temps
b0n5a1: t'as fait aoc Zorg1 ?
b0n5a1: Recher : https://adventofcode.com/2020 , ça change des coc ^^
Zorg1: j'ai même pas commencé les AoC encore
Zorg1: je ferais ça ce WE
Zorg1: ah ok recher est sur twitch
Zorg1: je percute
Stilgart: merci, moi j'avais pas percuté
Stilgart: (et idem, aoc va attendre un peu)
b0n5a1: erf
b0n5a1: j'a commencé une fois 2015 apparemment, m'en souvenais pas
b0n5a1: je viens de le voir
b0n5a1: bonne nuit