Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3841 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  24420  24421  24422  ..  27170  27171  27172  27173  27174  27175
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2402562
masklinn
í dag viðrar vel til loftárása
Posté le 04-12-2021 à 18:11:28  profilanswer
 

Reprise du message précédent :

ratibus a écrit :

Pour les leaderboards privés, j'aimerais bien une option de tri supplémentaire qui prenne en date de démarrage non pas 6h du matin mais l'heure d'ouverture du problème (en considérant que ça triche pas :o).


Je sais bien qu’on a l’élite de plusieurs nations mais he doute qu’Eric Wastl soit sur hfr.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 04-12-2021 à 18:11:28  profilanswer
 

n°2402563
Flaie
Posté le 04-12-2021 à 18:20:34  profilanswer
 

ratibus a écrit :

Pour les leaderboards privés, j'aimerais bien une option de tri supplémentaire qui prenne en date de démarrage non pas 6h du matin mais l'heure d'ouverture du problème (en considérant que ça triche pas :o).


tu pourrais pas empêcher la triche d'avoir un autre compte préparer ton code et puis arriver sur ton leaderboard privé et submit tjrs en premier.
 
le meilleur truc à faire c'est de s'en foutre du classement :)

n°2402564
R3g
fonctionnaire certifié ITIL
Posté le 04-12-2021 à 18:31:46  profilanswer
 

Flaie a écrit :


tu pourrais pas empêcher la triche d'avoir un autre compte préparer ton code et puis arriver sur ton leaderboard privé et submit tjrs en premier.
 
le meilleur truc à faire c'est de s'en foutre du classement :)


Ça pourrait être une option du leaderboard privé, pour le cas où on est entre gens de confiance


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2402565
Feitan21
Posté le 04-12-2021 à 18:35:03  profilanswer
 

Je suis d'accord avec masklinn, surtout que dans un leaderprivé tu peux tricher si tu veux mais la plupart joueront le jeu. Et c'est bien de voir si tu as été rapide sur un problème ou si tu es passé à côté d'une solution simple.

n°2402566
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 04-12-2021 à 18:45:56  profilanswer
 

Flaie a écrit :


tu pourrais pas empêcher la triche d'avoir un autre compte préparer ton code et puis arriver sur ton leaderboard privé et submit tjrs en premier.

 

le meilleur truc à faire c'est de s'en foutre du classement :)


Comment ça s'en foutre du classement ? Quel intérêt d'avoir des leaderboard sinon ?

 

Non clairement autoriser un début à l'heure qu'on veut ce serait une super option pour se tirer la bourre sans que ce soit essentiellement un test de détermination.

Message cité 1 fois
Message édité par hephaestos le 04-12-2021 à 18:47:23
n°2402567
___alt
Posté le 04-12-2021 à 18:53:59  profilanswer
 

flo850 a écrit :


Oui
Mais malgré tout ça finance pas mal de recherches et d'essais  
Après la gamine mise en avant pour avoir été guérie du sma l'a été grace a un traitement d'un labo privé (Novartis)
 
Édit : tu te rends compte que c'est une problématique qui me touche de prêt et que je n'ai pas besoin d'aller très loin pour avoir une asso de malade


 
Mais du coup t'as plus vite fait de zapper les intermédiaires.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2402568
ratibus
Posté le 04-12-2021 à 19:04:47  profilanswer
 

masklinn a écrit :


Je sais bien qu’on a l’élite de plusieurs nations mais he doute qu’Eric Wastl soit sur hfr.


 [:obvious]  
J'émettais l'idée ici pour voir déjà si c'est une idée à la con :D

R3g a écrit :


Ça pourrait être une option du leaderboard privé, pour le cas où on est entre gens de confiance


C'était bien le sens de ma remarque, uniquement pour les leaderboard privés (vu qu'il y a déjà des choix de tris).


---------------
Mon blog
n°2402569
ratibus
Posté le 04-12-2021 à 19:05:51  profilanswer
 

Flaie a écrit :


tu pourrais pas empêcher la triche d'avoir un autre compte préparer ton code et puis arriver sur ton leaderboard privé et submit tjrs en premier.
 
le meilleur truc à faire c'est de s'en foutre du classement :)


Ouais enfin si t'es avec des tricheurs sur ton leaderboard privé, il vaut mieux choisir l'équipe :D
Sachant que ça viserait pas à remplacer les tris existants mais à en ajouter un.


---------------
Mon blog
n°2402570
masklinn
í dag viðrar vel til loftárása
Posté le 04-12-2021 à 19:10:32  profilanswer
 

ratibus a écrit :

Sachant que ça viserait pas à remplacer les tris existants mais à en ajouter un.


Après faut noter que ça implique aussi une certaine complication du service: actuellement je doute qu'AoC track l'ouverture du problème pour un compte donné, dans la mesure où actuellement tous les scores sont basés sur les étoiles.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2402571
ratibus
Posté le 04-12-2021 à 19:21:03  profilanswer
 

masklinn a écrit :


Après faut noter que ça implique aussi une certaine complication du service: actuellement je doute qu'AoC track l'ouverture du problème pour un compte donné, dans la mesure où actuellement tous les scores sont basés sur les étoiles.


Ca dépend clairement du modèle de données :o
Sachant qu'il track les timestamp d'obtention des étoiles, ça peut être envisageable qu'il stocke l'ouverture du jour.


---------------
Mon blog
mood
Publicité
Posté le 04-12-2021 à 19:21:03  profilanswer
 

n°2402572
flo850
moi je
Posté le 04-12-2021 à 19:45:53  profilanswer
 

hephaestos a écrit :


Comment ça s'en foutre du classement ? Quel intérêt d'avoir des leaderboard sinon ?

 

Non clairement autoriser un début à l'heure qu'on veut ce serait une super option pour se tirer la bourre sans que ce soit essentiellement un test de détermination.


sachant que d'ici le milieu de semaine prochaine, les scores vont commencer à s'ecarter


Message édité par flo850 le 04-12-2021 à 19:45:59

---------------

n°2402573
Kenshineuh
Posté le 04-12-2021 à 19:48:30  profilanswer
 

Je viens de finir le day04 à mon tour (en JS). J'ai pas été rapide, et je viens de lire vos algos, je me suis pris la tête pour rien. :D

 

En gros moi j'ai surchargé les boards avec un truc du style :

 
Code :
  1. BOARDS[index] = {
  2.   grid: [], // La board original
  3.   target: {
  4.     lines: {},
  5.     columns: {},
  6.   }
  7. }
 

Chaque fois qu'un nombre est trouvé dans une board, j'ajoute +1 dans le "target" correspondant. Imaginons un 3 est trouvé dans ma grille à la 2ème ligne, 4ème colonne, ça fera donc target.lines[2] +=1, target.column[4] +=1.
Et à chaque sortie de nombre, j'ai une fonction existWinner qui boucle sur les boards, check si une line ou une column est égale à 5, si c'est le cas, je break la boucle et j'appelle ma fonction de calcul de score.

 

Pour la partie 2, j'ai viré le break, et j'ai mis mes boards gagnantes dans un Set(). Comme ça j'ai ma dernière grille gagnante facilement. Et j'ai juste une variable qui sauvegarde le dernier nombre dès qu'une grille est ajouté dans mon Set().

Message cité 1 fois
Message édité par Kenshineuh le 04-12-2021 à 19:49:15
n°2402574
flo850
moi je
Posté le 04-12-2021 à 19:50:15  profilanswer
 

https://i.redd.it/wvsi9rx46j381.jpg
les parent d'un tireur a oxford

Citation :

They not only bought the gun for the child and didnt secure it but they were warned by the school that he was exhibiting dangerous behavior by multiple teachers and admin. They were called to the school before the shooting occurred and didnt take their kid home. They knew he was dangerous and wanted to cause harm and didnt take any reasonable steps to stop him from accessing a lethal weapon or remove him from the situation. Frankly most school shooters parents should be held accountable for providing weapons and ignoring warning signs.


---------------

n°2402575
skeye
Posté le 04-12-2021 à 19:53:11  profilanswer
 

Kenshineuh a écrit :

Je viens de finir le day04 à mon tour (en JS). J'ai pas été rapide, et je viens de lire vos algos, je me suis pris la tête pour rien. :D
 
En gros moi j'ai surchargé les boards avec un truc du style :  
 

Code :
  1. BOARDS[index] = {
  2.   grid: [], // La board original
  3.   target: {
  4.     lines: {},
  5.     columns: {},
  6.   }
  7. }


 
Chaque fois qu'un nombre est trouvé dans une board, j'ajoute +1 dans le "target" correspondant. Imaginons un 3 est trouvé dans ma grille à la 2ème ligne, 4ème colonne, ça fera donc target.lines[2] +=1, target.column[4] +=1.
Et à chaque sortie de nombre, j'ai une fonction existWinner qui boucle sur les boards, check si une line ou une column est égale à 5, si c'est le cas, je break la boucle et j'appelle ma fonction de calcul de score.
 
Pour la partie 2, j'ai viré le break, et j'ai mis mes boards gagnantes dans un Set(). Comme ça j'ai ma dernière grille gagnante facilement. Et j'ai juste une variable qui sauvegarde le dernier nombre dès qu'une grille est ajouté dans mon Set().


 
ça ressemble à ce que j'ai fait :D


---------------
Can't buy what I want because it's free -
n°2402577
masklinn
í dag viðrar vel til loftárása
Posté le 04-12-2021 à 20:43:31  profilanswer
 


Du  [:aloy]

 

Mais le Oxford du Michigan, pas celui d'Angleterre:

Citation :

Four students were killed and seven people were injured, including a teacher. Authorities arrested and charged 15-year-old sophomore Ethan Crumbley


Les parents ont l'air super classe, ils ont acheté un pistolet à leur gamin:

Citation :

And it's not like they had the gun for ages and then he finally decided to take it and do this. The father bought it on Black Friday just before the Tuesday shooting. That's 1 school day, so this happened pretty immediately after the gun was bought for the kid too.


 clairement dérangé (probablement en grande partie à cause des parents):

Citation :

The first meeting occurred after a teacher spotted Crumbley using his phone to search for ammunition and reported him. School officials left a voicemail and email for Crumbley's mother Jennifer; she did not respond, but she later texted her son, saying, "LOL I'm not mad at you. You have to learn not to get caught."


Citation :

The second meeting occurred after another teacher found a violent drawing on Crumbley's desk, described by McDonald in a press conference as:
[...]
Crumbley's parents were summoned to the school, where they were shown the drawing – which Crumbley had scribbled over in an attempt to conceal its contents – and instructed to seek counseling for their son within 48 hours. They "resisted the idea" of Crumbley leaving the school at the time, and he was returned to class.[46] Crumbley then allegedly committed the shooting at 12:50 p.m


 et après l'acte d'accusation contre le dit gamin ils sont passés à la banque retirer $4000 puis ils ont essayé de se barrer au canada [:petrus75]


Message édité par masklinn le 04-12-2021 à 20:47:37

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2402578
pataluc
Posté le 04-12-2021 à 22:01:17  profilanswer
 

R3g a écrit :


Pourquoi list(map(list, zip(*rows)) et pas list(zip(*rows)) ?


parce que j'ai pompé honteusement la première réponse SO qui fonctionnait pour un transpose de list(list())??
 
 [:patrice brueghel:3]

n°2402579
pataluc
Posté le 04-12-2021 à 22:21:27  profilanswer
 

R3g a écrit :

En plus j'ai galéré comme un con pendant 10 minutes avant de comprendre qu'il faut pas remove un élément d'une liste pendant qu'on itère dessus :/


j'ai fait la même connerie mais en l'écrivant j'ai eu une alerte dans mon p'tit cerveau en mode: ya des chances que ca marche pas, donc j'ai résolu vite...  :D (je crois que j'avais perdu bien plus de 10mn là dessus l'année dernière, comme quoi c'est valable, on progresse... ^^)

n°2402580
___alt
Posté le 04-12-2021 à 22:35:04  profilanswer
 

R3g a écrit :

En plus j'ai galéré comme un con pendant 10 minutes avant de comprendre qu'il faut pas remove un élément d'une liste pendant qu'on itère dessus :/


 
Chose rare mais j'ai bien apprécié le removeIf() en Java pour retirer les éléments d'une collection qui satisfont un prédicat.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2402581
nraynaud
lol
Posté le 04-12-2021 à 23:48:09  profilanswer
 

´tain mais qu’est-ce que vous parlez d’info sur ce topac! Vous avez vraiment pas de vie !
 
https://img3.super-h.fr/images/snapshot_2824752495aa0f11635cd92d7.jpg
Moi pendant ce temps, j’ai été à la déchèterie 4 fois est le studio a presque plus de ciment !


---------------
trainoo.com, c'est fini
n°2402582
R3g
fonctionnaire certifié ITIL
Posté le 05-12-2021 à 00:12:36  profilanswer
 

___alt a écrit :


 
Chose rare mais j'ai bien apprécié le removeIf() en Java pour retirer les éléments d'une collection qui satisfont un prédicat.


Ouais mais ça revient quand même à parcourir ta liste une deuxième fois


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2402583
DDT
Few understand
Posté le 05-12-2021 à 00:22:26  profilanswer
 

Le problème d'aujourd'hui me rappelle pourquoi l'AoC finit toujours par me gaver. [:tinostar]
Le parsing bien chiant (bon je me suis un peu dispersé à cause de l'activation des nulls explicites). (Note à moi-même: essayer cats-parse la prochaine fois).
 
Je sors un foldMap monoïdal pour construire un index. [:chtivain:1]  
Puis ça se termine avec un foldLeft de bourrin si je veux pas utiliser une map muable. [:chtivain:2]  
https://github.com/hygt/aoc2021/blo [...] ay04.scala


---------------
click clack clunka thunk
n°2402584
___alt
Posté le 05-12-2021 à 00:22:32  profilanswer
 

R3g a écrit :


Ouais mais ça revient quand même à parcourir ta liste une deuxième fois


 
Tout à fait. Mais comme dans l'AOC en général les exercices destinés à te punir sur la perf laissent peu de place au doute et que la volumétrie ici est ridicule (1000 grilles je crois), j'ai laissé pisser.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2402585
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 05-12-2021 à 07:37:55  profilanswer
 

Aujourd'hui j'ai perdu un temps inexcusable sur la partie 2 mais bon...
 
En tout cas entre aujourd'hui et hier globalement les parties 2 redeviennent un simple twist sur la 1.
 
https://pastebin.com/7i5VJ3YQ

n°2402586
Flaie
Posté le 05-12-2021 à 07:43:41  profilanswer
 

DDT a écrit :

Le problème d'aujourd'hui me rappelle pourquoi l'AoC finit toujours par me gaver. [:tinostar]
Le parsing bien chiant (bon je me suis un peu dispersé à cause de l'activation des nulls explicites). (Note à moi-même: essayer cats-parse la prochaine fois).

 

Je sors un foldMap monoïdal pour construire un index. [:chtivain:1]
Puis ça se termine avec un foldLeft de bourrin si je veux pas utiliser une map muable. [:chtivain:2]
https://github.com/hygt/aoc2021/blo [...] ay04.scala


C'est très joli.

 

Kotlin

Spoiler :

Les deux sont donc solvable avec un seul et même code, dans la partie 1 je ne garde que les lignes horizontale/verticale dans l'input.
slope() calcule la pente de la droite
hashBag c'est un mutableMap with default value 0
J'ai utilisé les sequences Kotlin plutôt qu'un do/while mais c'est pareil en genre 10 fois plus lent :o (let's have fun)

 

https://rehost.diberie.com/Picture/Get/f/54978

 
Spoiler :

https://rehost.diberie.com/Picture/Get/f/54987

 

Bon dimanche, moi je dois mettre mes talents de boulanger à l'oeuvre pour faire des buns, ma fille voulait un burger pour son anniversaire ce midi (ouais les anniversaire chez nous c'est tout le WE :P)]

 
hephaestos a écrit :

Aujourd'hui j'ai perdu un temps inexcusable sur la partie 2 mais bon...

 

En tout cas entre aujourd'hui et hier globalement les parties 2 redeviennent un simple twist sur la 1.

 

https://pastebin.com/7i5VJ3YQ

 
Spoiler :

J'ai mis plus de temps sur la partie 1 car j'ai direct fait la solution pour toutes les droites et pas que les horizontale / verticale :D


Message édité par Flaie le 05-12-2021 à 10:35:06
n°2402587
ratibus
Posté le 05-12-2021 à 12:36:28  profilanswer
 

AoC 2021 Day 5 : 23 minutes sur la première partie avec une solution pourrie et 45 minutes dans la seconde pour refaire un truc clean :D
https://github.com/ratibus/adventof [...] lve_02.php

Spoiler :

J'ai bien vu au temps de run de ma première partie sur l'input complet que ça devait pas être la bonne solution :D
Et oui j'avais senti le truc venir qu'avec la bonne solution direct, c'était trivial de répondre à la partie 2...
Dans la partie 2 j'ai perdu du temps inutilement en calculant la distance entre les points avec la formule racine carrée de (x1 - x2)²+(y1 - y2)². Sauf que j'augmentais de 1 dans mon itération au lieu d'avancer de racine carrée de 2, le boulet :D
Le temps de m'en rendre compte j'avais refait le calcul de distance en comptant un nombre de points et c'est passé direct.
 
Premier jour de l'AoC de l'année où je dois sortir Meld pour comparer des grilles :D


 
L'année dernière, day 5, j'avais fait 18 minutes. J'espère qu'il va pas falloir appliquer ce coefficient à toutes les journées :o

n°2402589
Devil'sTig​er
Posté le 05-12-2021 à 13:11:09  profilanswer
 

Je me suis planté, parti sur la 02 direct sans faire gaffe, galérer a pas comprendre pourquoi ca me donnait pas le résultat, pour changer le code pour que ca fasse la 01, pour ensuite subir la déception ultime de rollback tout le code pour revenir sur la partie 02 et faire un vieux if dégeu :D
 
https://pastebin.com/GSQvULCc
 
Et clairement le parsing ca m'emmerde :D filez moi un JSON bordel. Parce qu'au final la majorité du temps je le passe sur le parsing :/
 
Enfin au moins j'apprends grace a Masklinn :D

n°2402590
nraynaud
lol
Posté le 05-12-2021 à 13:19:52  profilanswer
 

Citation :


the minimum height at which a squirrel can't survive a fall is about 4800 miles: they can survive a fall at terminal velocity so this is how long it'd take them to starve.


---------------
trainoo.com, c'est fini
n°2402591
___alt
Posté le 05-12-2021 à 13:26:40  profilanswer
 

J'ai été lent (j'ai envie de dire comme d'hab) aujourd'hui, mais pour une fois j'ai fait un truc clean qui est passé quasi direct à la partie 2.
 

Spoiler :


https://i.imgur.com/DWWE7NM.png
 
Au final j'ai passé plus de temps sur le code de support, à me créer une InfiniteGrid que j'avais pas, écrire vite fait une classe Segment et lui faire générer sa liste de points :  
 
https://i.imgur.com/HvczXHd.png
 
La partie 2 est exactement identique, sans le filtre "isStraight".
 


 


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2402592
Mackila
Posté le 05-12-2021 à 13:29:47  profilanswer
 

nraynaud a écrit :

Citation :

the minimum height at which a squirrel can't survive a fall is about 4800 miles: they can survive a fall at terminal velocity so this is how long it'd take them to starve.



 
A ce compte là, autant partir de l'altitude à laquelle les conditions extérieures sont létales pour le bestiau... Et c'est bien plus bas :o

n°2402593
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2021 à 14:28:50  profilanswer
 

Devil'sTiger a écrit :


 
Et clairement le parsing ca m'emmerde :D filez moi un JSON bordel. Parce qu'au final la majorité du temps je le passe sur le parsing :/


C’est pour ça que les gens qui ont l’habitude de faire aoc ont des routines toutes prêtes: il y a des styles de fichiers d’entrée  qui reviennent régulièrement et que tu peux réutiliser d’années en années. Genre si tu regardes le code de flaie il a toute une toolbox dédiée.
 
D’autant plus que généralement ya pas de pièges dans les données AoC (elles sont “propres) donc tu peux juste mettre des assertions aux entrées pour t’assurer que tu utilises la bonne primitive.

Message cité 1 fois
Message édité par masklinn le 05-12-2021 à 14:31:30

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2402594
flo850
moi je
Posté le 05-12-2021 à 14:38:17  profilanswer
 

moi j'ai fait commt DT : un truc rapide pour le 1, buggué pour le 2 , tout casser en voulant faire vite, puis rollback et solution ( fonctionnelle mais pas jolie)


Message édité par flo850 le 05-12-2021 à 14:38:29

---------------

n°2402595
gfive
Posté le 05-12-2021 à 14:41:47  profilanswer
 

___alt a écrit :

J'ai été lent (j'ai envie de dire comme d'hab) aujourd'hui, mais pour une fois j'ai fait un truc clean qui est passé quasi direct à la partie 2.

 
Spoiler :


https://i.imgur.com/DWWE7NM.png

 

Au final j'ai passé plus de temps sur le code de support, à me créer une InfiniteGrid que j'avais pas, écrire vite fait une classe Segment et lui faire générer sa liste de points :

 

https://i.imgur.com/HvczXHd.png

 

La partie 2 est exactement identique, sans le filtre "isStraight".

 

 


 


Mais pourquoi emmerder avec la grid?

 

Tu as juste besoin des positions couvertes par chaque ligne.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2402596
Flaie
Posté le 05-12-2021 à 14:48:19  profilanswer
 

masklinn a écrit :


C’est pour ça que les gens qui ont l’habitude de faire aoc ont des routines toutes prêtes: il y a des styles de fichiers d’entrée  qui reviennent régulièrement et que tu peux réutiliser d’années en années. Genre si tu regardes le code de flaie il a toute une toolbox dédiée.
 
D’autant plus que généralement ya pas de pièges dans les données AoC (elles sont “propres) donc tu peux juste mettre des assertions aux entrées pour t’assurer que tu utilises la bonne primitive.


Exact, généralement si tu as :
 
- lecture ligne par ligne
- scan des entiers dans un input  
- scan par format genre foo: bar, ou commande valeur
- lecture par groupes (comme vu hier)
- lecture de grilles avec . et #
 
T'es deja bien couvert

n°2402597
___alt
Posté le 05-12-2021 à 14:49:20  profilanswer
 

gfive a écrit :

Mais pourquoi emmerder avec la grid?
Tu as juste besoin des positions couvertes par chaque ligne.

 

Effectivement j'aurais pu prendre tous les points et les grouper dans une map avec un collect ad hoc qui fait le comptage, mais j'aime bien avoir quelques abstractions bien décrites.
Et InfiniteGrid c'est pas de la rocket science, c'est 3 méthodes autour d'une map hein :o

Message cité 1 fois
Message édité par ___alt le 05-12-2021 à 14:50:21

---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2402598
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2021 à 15:03:31  profilanswer
 

Flaie a écrit :


Exact, généralement si tu as :
 
- lecture ligne par ligne
- scan des entiers dans un input  
- scan par format genre foo: bar, ou commande valeur
- lecture par groupes (comme vu hier)
- lecture de grilles avec . et #
 
T'es deja bien couvert


Et plus le langage est strictement (et statiquement) typé plus ça va aider, aussi bien en gain de temps (sur des trucs qui sont fondamentalement très répétitifs et peu intéressants) qu'en lisibilité.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2402599
ratibus
Posté le 05-12-2021 à 15:09:57  profilanswer
 

J'adore le parsing :d


---------------
Mon blog
n°2402600
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 05-12-2021 à 15:25:09  profilanswer
 

ratibus a écrit :

AoC 2021 Day 5 : 23 minutes sur la première partie avec une solution pourrie et 45 minutes dans la seconde pour refaire un truc clean :D
https://github.com/ratibus/adventof [...] lve_02.php

Spoiler :

J'ai bien vu au temps de run de ma première partie sur l'input complet que ça devait pas être la bonne solution :D
Et oui j'avais senti le truc venir qu'avec la bonne solution direct, c'était trivial de répondre à la partie 2...
Dans la partie 2 j'ai perdu du temps inutilement en calculant la distance entre les points avec la formule racine carrée de (x1 - x2)²+(y1 - y2)². Sauf que j'augmentais de 1 dans mon itération au lieu d'avancer de racine carrée de 2, le boulet :D
Le temps de m'en rendre compte j'avais refait le calcul de distance en comptant un nombre de points et c'est passé direct.

 

Premier jour de l'AoC de l'année où je dois sortir Meld pour comparer des grilles :D

 

L'année dernière, day 5, j'avais fait 18 minutes. J'espère qu'il va pas falloir appliquer ce coefficient à toutes les journées :o

 

J'ai l'impression que tu ne vérifies pas si les lignes sont bien des diagonales à 45°  [:transparency] Elles le sont forcément toutes ?

 

Ma version plus verbeuse : https://github.com/Ydalb/adventofco [...] solve2.php  :o

Message cité 1 fois
Message édité par Ydalb le 05-12-2021 à 15:25:23

---------------
:o
n°2402601
ratibus
Posté le 05-12-2021 à 15:30:01  profilanswer
 

Ydalb a écrit :


 
J'ai l'impression que tu ne vérifies pas si les lignes sont bien des diagonales à 45°  [:transparency] Elles le sont forcément toutes ?
 
Ma version plus verbeuse : https://github.com/Ydalb/adventofco [...] solve2.php  :o


Oui elles sont soit horizontales, soit verticales, soit à 45. C'est dans l'énoncé :)
Si elles n'étaient pas à 45 ce serait un poil plus compliqué pour vérifier que ça touche des cases à coordonnées entières.


---------------
Mon blog
n°2402602
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 05-12-2021 à 15:30:54  profilanswer
 

:jap:
 
AoC 2022 : j’apprends à la lire les énoncés :o


---------------
:o
n°2402603
gfive
Posté le 05-12-2021 à 15:43:45  profilanswer
 

___alt a écrit :


 
Effectivement j'aurais pu prendre tous les points et les grouper dans une map avec un collect ad hoc qui fait le comptage, mais j'aime bien avoir quelques abstractions bien décrites.
Et InfiniteGrid c'est pas de la rocket science, c'est 3 méthodes autour d'une map hein :o


 
non mais on est ok sur l'infinite grid, mais objectivement ici ça sert à rien :o
 
 

Spoiler :


package fr.ela.aoc2021;
 
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
 
public class D05 extends AoC {
 
 
    @Override
    public void run() {
        Space testSpace = stream(getTestInputPath()).map(Line::parse).filter(Objects::nonNull).collect(Collectors.toCollection(Space::new));
        System.out.println("Test result part 1 : " + testSpace.findPositionsWithOverlappingLines(2, l -> EnumSet.of(Direction.HORIZONTAL, Direction.VERTICAL).contains(l.direction)));
        System.out.println("Test result part 2 : " + testSpace.findPositionsWithOverlappingLines(2, l -> true));
 
        Space space = stream(getInputPath()).map(Line::parse).filter(Objects::nonNull).collect(Collectors.toCollection(Space::new));
        System.out.println("Real result part 1 : " + space.findPositionsWithOverlappingLines(2, l -> EnumSet.of(Direction.HORIZONTAL, Direction.VERTICAL).contains(l.direction)));
        System.out.println("Real result part 2 : "+space.findPositionsWithOverlappingLines(2, l -> true));
    }
 
    record Position(int x, int y) {
        static Position parse(String s) {
            String[] pos = s.split("," );
            return new Position(Integer.parseInt(pos[0]), Integer.parseInt(pos[1]));
        }
 
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Position position = (Position) o;
            return x == position.x && y == position.y;
        }
 
        @Override
        public int hashCode() {
            return Objects.hash(x, y);
        }
    }
 
    public static class Space extends ArrayList<Line> {
 
        public long findPositionsWithOverlappingLines(int number, Predicate<Line> filter) {
            return stream().filter(filter)
                    .map(Line::positions)
                    .flatMap(List::stream)
                    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                    .entrySet().stream()
                    .filter(e -> e.getValue() >= number)
                    .count();
        }
    }
 
    private enum Direction {
        HORIZONTAL,
        VERTICAL,
        DIAGONAL;
 
        static Direction get(Position start, Position end) {
            if (Math.abs(start.y - end.y) == Math.abs(start.x - end.x)) {
                return Direction.DIAGONAL;
            }
            if (start.x == end.x) {
                return Direction.VERTICAL;
            }
            if (start.y == end.y) {
                return Direction.HORIZONTAL;
            }
            return null;
        }
    }
 
    record Line(Position start, Position end, Direction direction, int length) {
 
        static Line parse(String s) {
            String[] l = s.split(" -> " );
            Position start = Position.parse(l[0]);
            Position end = Position.parse(l[1]);
            Direction dir = Direction.get(start, end);
            int length = Math.max(Math.abs(start.x - end.x), Math.abs(start.y - end.y));
            if (dir == null) {
                return null;
            } else {
                return new Line(start, end, dir, length);
            }
        }
 
        int getInc(int start, int end) {
            if (start == end) {
                return 0;
            }
            return start < end ? 1 : -1;
        }
 
        List<Position> positions() {
            List<Position> positions = new ArrayList<>();
            int incX = getInc(start.x, end.x);
            int incY = getInc(start.y, end.y);
            int y = start.y;
            for (int n = 0; n <= length; n++) {
                positions.add(new Position(start.x + n * incX, start.y + n * incY));
            }
            return positions;
        }
 
    }
}
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2402604
skeye
Posté le 05-12-2021 à 15:48:10  profilanswer
 

Bon, fait en version très verbeuse. Je m'attendais à plus compliqué pour la partie 2. :o

 

https://github.com/mrossard/AOC2021 [...] 5/day5.php


Message édité par skeye le 05-12-2021 à 15:48:22

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  24420  24421  24422  ..  27170  27171  27172  27173  27174  27175

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)