Environ 4h-4h30 effectif dessus.
La première partie est fastidieuse, mais çà se code bien (~2h)
La deuxième partie est encore plus fastidieuse.
J'ai opté pour une classe "Arrete" agrégeant 2 segments caractérisés par une direction.
Si on est dans un de ces 2 segments en matchant la direction de ce dernier, j'applique la transformation de changement d’arête.
J'ai donc pris le temps d'identifier manuellement les arêtes du jeu de test pour valider mon algo. Je me suis aidé d'un petit découpage papier
pour faciliter l'opération.
Puis, j'ai fait pareil pour mon jeu de données. C'est le plus long.
Par exemple pour le Jeu de test, elle donne ceci.
9,9->9,12L 8,8->5,8D
5,5->8,5U 9,1->9,4L
13,9->16,9U 12,8->12,5R
1,5->4,5U 12,1->9,1U
4,8->1,8D 9,12->12,12D
13,12->16,12D 1,8->1,5L
12,4->12,1R 16,9->16,12R
Posté par syj .
En réponse au message Avent du Code, jour 21.
Évalué à 2.
Dernière modification le 21 décembre 2022 à 23:56.
J'ai mis grosso modo 1h15.
Pour faire l'éval, j'ai utilisé un parser JEXL. Le problème est qu'il travaille en double & qu'il m'a fallut passer en BigDecimal pour éviter les pertes de précisions du au double.
Résultat, j'ai été obligé de transformer les expression pour utiliser des BigDecimal.
çà m'a permit de trouver rapidement la première étoile.
La deuxième étoile.
J'ai déjà commencé par réduire l'arbre d'évaluation, en gros tout ce qui ne dépend pas de humn.
Puis, j'ai rapidement vu que la fonction décroissé. J'aurai pu tenter une recherche dichotomique dans l'espace d'entier.
Mais j'étais trop fatigué pour coder un truc intelligent.
Résultat, j'ai monté une boucle qui permet de suivre l'évolution, j'ai joué manuellement sur les paramétres pour trouver la valeur
C'est tellement sale que je partage mon code pour une fois :-p
J'ai pris le problème du mauvais sens, il m'a fallut plus de 3h pour comprendre qu'il ne fallait pas appliquer la transformation 3000 fois pour avoir la réponse.
J'ai réecris 3 ou 4 fois mon code. J'ai commencé par un tableau avec des modulos au final, j'ai terminé par une liste doublement chainés comme quasiment tout le monde.
J'ai remis une bonne 1h30 pour caler le modulo pour éviter d'appliquer les millions de déplacement.
Bref, un très mauvaise journée. En plus, vous êtes plein à y être arrivé avant moins résultat.
Je n'ai plus aucun espoir de rafler la seconde place.
Petite amélioration, je descends à 6s en modifiant mon DFS
L'idée est de ne pas aller jusqu'au bout si on sait déjà qu'on sera en-dessous du meilleur temps.
```
public static void executeDFS(State state) {
int leftTurn = NB_TURN_32- state.index;
int expGeode = state.geode+(NB_TURN_32-state.index) * (state.geodeRobot) + (leftTurn+1) * (leftTurn + 0) / 2;
Gg, Perso, j'y ai passé 2h ce matin et je bloque sur le fait que je ne trouve pas comment arriver à 12 sur le 2ème du test unit.
Je dois avoir un bug qui m'echape.
Malheureusement, j'ai 2 truc urgent qui sont tombé aujourd'hui. Pas sur que je puisse y rebosser aujourd'hui.
et la fin de semaine risque d'être compliqué, je suis en vacances jeudi soir.
La première étape stockés les cubes dans un HashSet puis compter les faces non adjacente à une autre en checkant la présence dans le HashSet.
Pour la deuxième, j'ai monté un dijkstra en partant d'un espace à l'extérieur à la structure de cube. Au final, je check si le côté du cube est adjacent à une zone accessible depuis l'air.
La première partie est relativement simple. Je joue à Tetris dans un tableau de char.
La deuxième partie est galère car si j'utilise la méthode de la première partie ,avec un clear du tableau quand c'est possible après une ligne pleine.
Il me fallait ~20j de calcul pour approcher 1000000000000L piece.
J'ai donc identifié quand le pattern d'empilement se répète. De cette manière, j'ai rapidement le test unit de la 2eme partie qui marchait.
pour trouver 1514285714288.
Seulement, quand j'appliquais la méthode sur mon input, çà ne marchait pas.
Je suis revenu sur un jeu plus petite et j'ai comparé la première méthode et la deuxième méthode avec le raccourcis quand je détecte la répétition.
J'ai constaté qu'il me manquait 9 à chaque application de la répétition.
En ajoutant, le nombre de répétition fois 9 ,j'ai obtenu le résultat attendu.
çà me rassure de voir que tout le monde a ramé sur celui d'aujourd'hui.
Perso, j'y ai bien passé 4h en cumulé. J'ai commencé vers 10h et au final, mon code met presque 1h pour trouver l'optimum de la 2ème réponse avec un AG.
Je pense que j'ai du manquer une simplification du problème car normalement tous les problèmes doivent sortir sur une machine normal en moins de 10min.
Ce matin, tu étais devant moi et il y a l'air d'avoir eu un nouvelle inscrit. Résultat,je te suis repassé devant.
Pour info, On est en mode Local Score
Local Score, which awards users on this leaderboard points much like the global leaderboard. If you add or remove users, the points will be recalculated, and the order can change. For N users, the first user to get each star gets N points, the second gets N-1, and the last gets 1. This is the default.
A priori, je te suis repassé devant car avec l'arrivé d'un nouveau , çà revalorise potentiellement le N des classements précédents.
C'est clair. L'an dernier, il y en a un ou j'y ai passé + d'une demi-journée pour arriver à le faire.
C'était celui , où il fallait monter un interpréteur d'expression pour lequel, il fallait déduire le min et la max possible. J'avais beau avoir optimisé mon code avec de la mémoïsation & quelques optims. Il mettait 30min à sortir la réponse :-p.
Juste pour comparer, un site officiel sur la cardiologie…
Ça fait un peu moins amateur avec des titres moins accrocheurs. https://sfcardio.fr/actualites
Il y a eu du taff pour faire le site du lien. Qui en est le commanditaire dans quel objectif ?
Sérieusement, je trouve que le timing est intéressant. Il aurait pu le faire depuis des années et il le fait maintenant dans une période ou il peut passer pour l'emblème de quelqu'un qui fuit l'impérialisme américain.
Bizarrement, je ne vois pas trop son intérêt mais par contre je vois bien l intérêt pour les autorités russe.
La force de ce pattern pour décrire un screen flow, c'est qu'une "Action | Transition" peut-être agnostique de son état de départ.
Résultat, tu peux très facilement créer des actions qui vont manipuler ta machine à état et l'utiliser depuis différents endroit .
Par exemple:
Action: "Editer une fiche client"
Cette action crée un état "fiche client" avec l'état précédent en paramètre.
L'état "fiche client" supporte alors une action ActionBack qui permet de revenir à l'état précédent.
Tu peux alors plugger ton action éditer la fiche client dans tous les écrans qui ont un client sélectionné.
Sans ajouter de code, tu peux alors revenir sur l'écran de départ.
D'une certaines manières, VueX reprend un peu ce principe.
# Il était vraiment sympa celui-ci :-)
Posté par syj . En réponse au message Avent du Code, jour 22. Évalué à 1.
Environ 4h-4h30 effectif dessus.
La première partie est fastidieuse, mais çà se code bien (~2h)
La deuxième partie est encore plus fastidieuse.
J'ai opté pour une classe "Arrete" agrégeant 2 segments caractérisés par une direction.
Si on est dans un de ces 2 segments en matchant la direction de ce dernier, j'applique la transformation de changement d’arête.
J'ai donc pris le temps d'identifier manuellement les arêtes du jeu de test pour valider mon algo. Je me suis aidé d'un petit découpage papier
pour faciliter l'opération.
Puis, j'ai fait pareil pour mon jeu de données. C'est le plus long.
Par exemple pour le Jeu de test, elle donne ceci.
9,9->9,12L 8,8->5,8D
5,5->8,5U 9,1->9,4L
13,9->16,9U 12,8->12,5R
1,5->4,5U 12,1->9,1U
4,8->1,8D 9,12->12,12D
13,12->16,12D 1,8->1,5L
12,4->12,1R 16,9->16,12R
# Aujourd'hui, on fait dans le sale.
Posté par syj . En réponse au message Avent du Code, jour 21. Évalué à 2. Dernière modification le 21 décembre 2022 à 23:56.
J'ai mis grosso modo 1h15.
Pour faire l'éval, j'ai utilisé un parser JEXL. Le problème est qu'il travaille en double & qu'il m'a fallut passer en BigDecimal pour éviter les pertes de précisions du au double.
Résultat, j'ai été obligé de transformer les expression pour utiliser des BigDecimal.
çà m'a permit de trouver rapidement la première étoile.
La deuxième étoile.
J'ai déjà commencé par réduire l'arbre d'évaluation, en gros tout ce qui ne dépend pas de humn.
Puis, j'ai rapidement vu que la fonction décroissé. J'aurai pu tenter une recherche dichotomique dans l'espace d'entier.
Mais j'étais trop fatigué pour coder un truc intelligent.
Résultat, j'ai monté une boucle qui permet de suivre l'évolution, j'ai joué manuellement sur les paramétres pour trouver la valeur
C'est tellement sale que je partage mon code pour une fois :-p
# il était vraiment null celui-ci
Posté par syj . En réponse au message Avent du Code, jour 20. Évalué à 2.
J'ai pris le problème du mauvais sens, il m'a fallut plus de 3h pour comprendre qu'il ne fallait pas appliquer la transformation 3000 fois pour avoir la réponse.
J'ai réecris 3 ou 4 fois mon code. J'ai commencé par un tableau avec des modulos au final, j'ai terminé par une liste doublement chainés comme quasiment tout le monde.
J'ai remis une bonne 1h30 pour caler le modulo pour éviter d'appliquer les millions de déplacement.
Bref, un très mauvaise journée. En plus, vous êtes plein à y être arrivé avant moins résultat.
Je n'ai plus aucun espoir de rafler la seconde place.
[^] # Re: Modélisation trop longue à débugger
Posté par syj . En réponse au message Avent du Code, jour 19. Évalué à 1.
Petite amélioration, je descends à 6s en modifiant mon DFS
L'idée est de ne pas aller jusqu'au bout si on sait déjà qu'on sera en-dessous du meilleur temps.
```
public static void executeDFS(State state) {
int leftTurn = NB_TURN_32- state.index;
int expGeode = state.geode+(NB_TURN_32-state.index) * (state.geodeRobot) + (leftTurn+1) * (leftTurn + 0) / 2;
if(bestMap.get(state.bp) != null && expGeode < bestMap.get(state.bp)) {
return;
}
}
```
[^] # Re: Modélisation trop longue à débugger
Posté par syj . En réponse au message Avent du Code, jour 19. Évalué à 2. Dernière modification le 19 décembre 2022 à 21:01.
Au final, J'aurai mis 35min de plus.
Le problème venait que j'avais mis une règle qui réduisait le nombre d'action possible pendant mon parcours en profondeur
Il met 1min3s pour calculer le 2ème.
Pour une fois , mon code n'est pas trop moche :)
[^] # Re: Modélisation trop longue à débugger
Posté par syj . En réponse au message Avent du Code, jour 19. Évalué à 1.
Est ce qu'on peut construire plusieurs robots en un tour ?
C'est probablement çà mon erreur ?
[^] # Re: Modélisation trop longue à débugger
Posté par syj . En réponse au message Avent du Code, jour 19. Évalué à 1.
Gg, Perso, j'y ai passé 2h ce matin et je bloque sur le fait que je ne trouve pas comment arriver à 12 sur le 2ème du test unit.
Je dois avoir un bug qui m'echape.
Malheureusement, j'ai 2 truc urgent qui sont tombé aujourd'hui. Pas sur que je puisse y rebosser aujourd'hui.
et la fin de semaine risque d'être compliqué, je suis en vacances jeudi soir.
# Plus cool que les jours précédents
Posté par syj . En réponse au message Avent du Code, jour 18. Évalué à 2.
J'ai mis 45min pour les 2 étoiles.
La première étape stockés les cubes dans un HashSet puis compter les faces non adjacente à une autre en checkant la présence dans le HashSet.
Pour la deuxième, j'ai monté un dijkstra en partant d'un espace à l'extérieur à la structure de cube. Au final, je check si le côté du cube est adjacent à une zone accessible depuis l'air.
# Tetris style
Posté par syj . En réponse au message Avent du Code, jour 17. Évalué à 3.
J'ai bien galéré encore sur celui-ci ~ 4h.
La première partie est relativement simple. Je joue à Tetris dans un tableau de char.
La deuxième partie est galère car si j'utilise la méthode de la première partie ,avec un clear du tableau quand c'est possible après une ligne pleine.
Il me fallait ~20j de calcul pour approcher 1000000000000L piece.
J'ai donc identifié quand le pattern d'empilement se répète. De cette manière, j'ai rapidement le test unit de la 2eme partie qui marchait.
pour trouver 1514285714288.
Seulement, quand j'appliquais la méthode sur mon input, çà ne marchait pas.
Je suis revenu sur un jeu plus petite et j'ai comparé la première méthode et la deuxième méthode avec le raccourcis quand je détecte la répétition.
J'ai constaté qu'il me manquait 9 à chaque application de la répétition.
En ajoutant, le nombre de répétition fois 9 ,j'ai obtenu le résultat attendu.
[^] # Re: Ça chauffe, ça chauffe !
Posté par syj . En réponse au message Avent du Code jour 16. Évalué à 1.
Gg.
Je n'ai pas pensé à simplifier les chemin.
Résultat, j'ai fait un AG. il met 1h pour trouver l'optimum de la 2ème réponse :o)
# Le 16/12
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 2.
çà me rassure de voir que tout le monde a ramé sur celui d'aujourd'hui.
Perso, j'y ai bien passé 4h en cumulé. J'ai commencé vers 10h et au final, mon code met presque 1h pour trouver l'optimum de la 2ème réponse avec un AG.
Je pense que j'ai du manquer une simplification du problème car normalement tous les problèmes doivent sortir sur une machine normal en moins de 10min.
[^] # Re: Vivement , le 1
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 1.
Ce matin, tu étais devant moi et il y a l'air d'avoir eu un nouvelle inscrit. Résultat,je te suis repassé devant.
Pour info, On est en mode Local Score
Local Score, which awards users on this leaderboard points much like the global leaderboard. If you add or remove users, the points will be recalculated, and the order can change. For N users, the first user to get each star gets N points, the second gets N-1, and the last gets 1. This is the default.
A priori, je te suis repassé devant car avec l'arrivé d'un nouveau , çà revalorise potentiellement le N des classements précédents.
[^] # Re: Vivement , le 1
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 3.
C'est clair. L'an dernier, il y en a un ou j'y ai passé + d'une demi-journée pour arriver à le faire.
C'était celui , où il fallait monter un interpréteur d'expression pour lequel, il fallait déduire le min et la max possible. J'avais beau avoir optimisé mon code avec de la mémoïsation & quelques optims. Il mettait 30min à sortir la réponse :-p.
[^] # Re: C'est parti !
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 2.
Il y a moins de joueur que l'an dernier.
https://adventofcode.com/2021/stats
https://adventofcode.com/2022/stats
et les sujets sont plus simple pour le moment.
[^] # Re: Vivement , le 1
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 5.
J'ai créé un leadboard
1844559-f65dbf07
si vous vous voulez le rejoindre, il faut l'ajouter dans votre interface sur adventofcode
# Vivement , le 1
Posté par syj . En réponse au journal Calendrier de l'Avent du code. Évalué à 5.
Mince, je voulais faire un journal dessus. Tu m'as devancé.
Pour ma part, je compte les jours avant son lancement autant que j'attends d'ouvrir mon premier jour de mon calendrier Kinder :-p.
Est-ce que çà vous dit d'ouvrir un groupe pour les lecteurs de LFR ? de cette manière , on aura un classement LFR :)
[^] # Re: Factice
Posté par syj . En réponse au lien vaccins ARNm : L’incidence des lésions myocardiques est 800 fois supérieure à l’incidence habituelle. Évalué à 0.
L article est signé :
Guillaume Le Pessec
Membre du Collège des Cardiologues en Formation,
Rouen
En fait, ce n est pas un médecin, ni un professeur et il ne fait pas partie d un service de cardilogie…
[^] # Re: Factice
Posté par syj . En réponse au lien vaccins ARNm : L’incidence des lésions myocardiques est 800 fois supérieure à l’incidence habituelle. Évalué à 0.
Juste pour comparer, un site officiel sur la cardiologie…
Ça fait un peu moins amateur avec des titres moins accrocheurs.
https://sfcardio.fr/actualites
Il y a eu du taff pour faire le site du lien. Qui en est le commanditaire dans quel objectif ?
# Factice
Posté par syj . En réponse au lien vaccins ARNm : L’incidence des lésions myocardiques est 800 fois supérieure à l’incidence habituelle. Évalué à 0.
Il y a un truc bizarre , l historique du site fait franchement factice
[^] # Re: Et hop une fois russe il est mobilisable -> direction le front ...
Posté par syj . En réponse au lien Edwardovitch Snowdonov (Edward Snowden devient citoyen russe sur décision de Vladimir Poutine). Évalué à 1.
Est-ce qu'il il avait le choix ?
Sérieusement, je trouve que le timing est intéressant. Il aurait pu le faire depuis des années et il le fait maintenant dans une période ou il peut passer pour l'emblème de quelqu'un qui fuit l'impérialisme américain.
Bizarrement, je ne vois pas trop son intérêt mais par contre je vois bien l intérêt pour les autorités russe.
[^] # Re: Concours annuel pour les qualifications
Posté par syj . En réponse au lien Challenge européen de la cybersécurité : France 3e. Évalué à 1.
Je vais y réfléchir pour le prochain. C'est vrai qu'on n'en parle pas assez sur LFR.
# Concours annuel pour les qualifications
Posté par syj . En réponse au lien Challenge européen de la cybersécurité : France 3e. Évalué à 6.
Pour ceux qu'ils ne le savent pas. Il y avait un Challenge pour faire partie la sélection de l'équipe de France fin avril
https://www.ssi.gouv.fr/agence/cybersecurite/france-cybersecurity-challenge-2022/
On peut y participer en Candidat Libre pour s'amuser. Personnelement, j'ai appris plein de chose.
Si çà vous interesse , il y a https://discord.gg/rwZY6hh8z8, on retrouve tous les postmortem des différentes épreuves, c'est très interessant.
[^] # Re: Mise à jour ...
Posté par syj . En réponse au journal La fibre orange hoquette ... ou comment devenir fou.. Évalué à 3.
Bonjour,
J'ai exactement les même symptomes que toi. une connection qui marche à 100Mb/s upload/download (suffisant pour moi)
Mais régulierement essentiellement sur le Wifi des téléphones. , j'ai des connexions qui sont perdu.
Je viens de tester ton script , je n'ai aucun paquet de rejeté.
Enfin, le truc bizarre, c'est que je télétravaille en wifi toute la journée sans soucis avec mon portable en liaison VPN
Par contre, dès que je suis en Wifi avec les téléphones & tablettes. J'ai régulierement des pertes de connexions.
Mes enfants en viennent à consommer leur 4G car le Wifi est vraiment trop limite.
A mon avis, c'est le wifi de la livebox qui est pourri.
# Happy birthday
Posté par syj . En réponse à la dépêche Vingt-quatre ans de LinuxFr.org. Évalué à 2.
Merci pour toutes ces années d information sur les logiciels libres.
# J'ai aussi beaucoup utilisé un pattern similaire
Posté par syj . En réponse au journal Sunday Python Pattern : Une machine à état toute simple. Évalué à 2.
Pendant des années , j'ai utilisé un pattern similaire. Il y a encore des traces sur ce projet sourceforge.
https://sourceforge.net/projects/planningrh/
Spécialement, le framework associé à ce projet.
https://sourceforge.net/p/planningrh/code/HEAD/tree/stateengine/
La force de ce pattern pour décrire un screen flow, c'est qu'une "Action | Transition" peut-être agnostique de son état de départ.
Résultat, tu peux très facilement créer des actions qui vont manipuler ta machine à état et l'utiliser depuis différents endroit .
Par exemple:
Action: "Editer une fiche client"
Cette action crée un état "fiche client" avec l'état précédent en paramètre.
L'état "fiche client" supporte alors une action ActionBack qui permet de revenir à l'état précédent.
Tu peux alors plugger ton action éditer la fiche client dans tous les écrans qui ont un client sélectionné.
Sans ajouter de code, tu peux alors revenir sur l'écran de départ.
D'une certaines manières, VueX reprend un peu ce principe.