C'est null. D'un point de vue niveau, c'est digne des premiers jours.
Dans l'ensemble, l'ensemble les exos sont beaucoup plus simple que les autres années.
Hormis le 21, je n'ai eu aucune difficultés. Et encore, c'est de ma faute. Je me suis bloqué sur une mauvaise piste.
Je regrette qu'il n'y a eu aucun exercice avec de la 3D du niveau du 24 de 2023 ou du niveau 22 de 2021.
Pareil, on n'a pas eu de traditionnel problème de séquence de motif sur un plan 2D …
Aucun problème de plan infini.
Pour la partie 1, il suffit de suivre les instructions et valider les TU.
Pour la partie 2, je pense que je n'ai pas choisie la solution la plus rapide. Je mets environ 1min pour trouver la solution.
Je fais une fonction recursive qui va descendre à une profondeur de 44.
En gros, je vais valider l'addition de 2 entiers en commençant par les bits de poids faible jusqu'au bit de poids fort.
Quand j'identifie une erreur j'applique une permutation de sortie.
Pour valider, l'addition de 2 entiers, je ne considère pas tous les entiers 244. çà serait trop long.
Je construits des additions particulières en binaires qui vont valider toutes les retenus à la profondeur ou je suis. A chaque addition , je valide la commutativité de mon addition.
Par exemple , à la profondeur 3
1
1
1
11
1
111
Mais je vais aussi valider le merge de nombre binaire sans retenu et je vérifie encore la commutativité.
1
0
10
101
Bien paramétré cette fonction de validation a été déterminant car c'est elle qui garantit qu'au fur et à mesure de l'exploration des combinatoire possible , je n'engendre pas de régression dans les chiffres et çà me permet de déterminer rapidement une impasse dans le choix de la permutation
L'autre point important, c'est quand on détecte une anomalie, je vais déterminer les bits concernés et en déduire les portes éligibles à la permutation.
çà limite mon exploration.
Ce n'est vraiment pas terrible comme performance :)
En gros à la lecture, je charge mes map & mes liens.
Puis, je regroupe mes éléments.
A la fin, je filtre pour trouver le plus gros groupe.
publicstaticMap<String,Node>nodesByCode=newHashMap<>();publicstaticMap<Node,List<Link>>linksByNodes=newHashMap<>();publicrecordNode(Stringname)implementsComparable<Node>{//...}publicrecordLink(Nodeleft,Noderight){// ...}publicrecordGroup(TreeSet<Node>members){// ...}publicvoidmain(){//...Set<Group>groups=newHashSet<>();for(Map.Entry<Node,List<Link>>entry:linksByNodes.entrySet()){Nodea=entry.getKey();TreeSet<Node>members=newTreeSet<>();recurseGroup(members,a);if(members.size()>3){groups.add(newGroup(members));}}/* Chercher le plus grand groups */}privatestaticvoidrecurseGroup(TreeSet<Node>members,Nodea){for(Noden:members){if(linksByNodes.get(a).stream().filter(l->l.match(n)).count()==0){return;}}members.add(a);for(Linklink:linksByNodes.get(a)){Nodeb=link.getOther(a);if(members.contains(b)){continue;}recurseGroup(members,b);}}
Je fais 215ms
et si je répète l'opération plusieurs fois , je descends à 15ms pour le même traitement.
Posté par syj .
En réponse au journal Advent of code 2024.
Évalué à 1.
Dernière modification le 23 décembre 2024 à 10:16.
Il n’était pas vraiment intéressant.
Pareil, j’ai suivi les instructions. J’ai été dessus quand je me suis rendu compte que le but de la deuxième partie n’était pas de trouver le secret initial ou un truc du genre.
Je n’ai pas cherché à optimiser, j’ai tout stocker dans un new long[2500][2001]
Posté par syj .
En réponse au journal Advent of code 2024.
Évalué à 2.
Dernière modification le 23 décembre 2024 à 10:03.
J'ai lutté sur celui-ci… presque 9h.
Pour la partie 1, j'ai tenté trouver un ordre dans les mouvements qui était toujours valide via un sort.
Finalement, je m'étais rabattu sur une fonction qui donnait tous les mouvements possibles.
Pour la partie 2, mon code de la partie 1 explosait même pour un chiffre à profondeur de 4.
Je me suis donc douté qu’il fallait faire un min. J’ai rapidement résolut ce problème avec un cache pour la programmation dynamique.
Par erreur, je pensai que çà exploserai en temps. Si je considérai tous les mouvements d’une case à l’autre.
Donc, j’ai tenté de chercher une distribution qui marchait dans tous les cas. J’ai réussi à trouver une combinaison qui valider pour la profondeur 2 et 3 pour les 2 jeux de test (j’ai obtenu la validation à 3 avec mon code de la partie 1) mais bien sûr, çà ne fonctionnait pas en profondeur 25. Il y a un cas non optimum qui doit apparaitre.
J’ai finalement tenté d’envisager tous les chemins possibles et j’ai été surpris de voir que cela marchait.
Comme quoi, quand on part sur une mauvaise piste, on bloque dessus.
Pour la première partie, j ai fait un simmle dijkstra.
Pour la deuxième partie, j ai brute force ce dernier à chaque pixel. J étais un peu déçu car je m attendais à une deuxième bien plus complexe.
Si le problème de performance aurait été plus complexe. En demultipliant la map d input. J aurai probablement tenter. De conserver le path dans mon dijkstra. De cette manière, j aurai pu déterminer rapidement les cases à mettre en jour quand c est dernier sont affecté par la mise à jour…
Ce matin pendant le travail, j'ai tenté de brute-force, je suis monté à plusieurs milliard de possibilité testé :O)
Ce midi:
J'ai modifié mon Engine pour qu'elle affiche le code Java équivalent à chaque opération.
Sur la base du code Java et l'impression du résultat en binaire
Que le bit de A était consommé progressivement par le programmme pour construire la sortie.
J'ai alors compris que le programme avançait par paquet de 3 à 6 bits.
J'avais presque la réponse ce midi. Je trouvais un A qui me donnait le bon résultat un chiffre de plus ",2" :)
Ce soir:
J'ai revu plein de fois de mon algo pour m’apercevoir que j'avais merdé un <= en < dans ma fonction de contrôle progressif.
Résultat, il me trouvait toujours un resultat matchant avec un chiffre de plus :O)
Perso , j'ai du combiner le déplacement & la rotation.
Au final même pour simplifier la partie 2, j'ai revu mon algo pour considérer la rotation comme un mouvement.
Ensuite pour la partie 2, j'utilise la map de poids de la partie 1.
Je pars du start et je parcours en profondeur ma map de poids.
Je passe d'un poids à l'autre récursivement , si le poids d déplacement ou une rotation correspond au poids minimum que j'avais constaté.
Aujourd'hui, je me suis dit que c'était le bon jour pour essayer une IA. Voir ce que cela donnerai.
Je l'ai fait d'abord en Java en utilisant un Mistral (medium) car j'étais persuadé qu'il arriverait à me donner la bonne réponse.
Après 10min à debug le code, j'avais la bonne réponse pour la première partie.
Pour la deuxième partie , je lui ai demandé d'utiliser Apache Commons Math. En soit ,le code était correcte.
Il y avait juste < 100 qui était resté, et il y avait un problème de cast à la sortie Apache Commons Math , où on sort des Double qu'il faut arrondir et non trunc.
Vu que j'étais persuadé que j'aurai été plus vite avec Python. J'ai fait aussi l'exercice en python avec numpy :)
J'ai aussi utilisé une IA pour voir et çà fonctionne.
Par contre, bizarrement, il gérait encore plus mal la lecture des données que j'ai du aussi réecrire complétement.
defsolve_for_machine(xA,yA,xB,yB,xPrize,yPrize):# Set up the matrix and vectorscoefficients=np.array([[xA,xB],[yA,yB]])constants=np.array([xPrize,yPrize])try:# Solve the system of equationssolution=np.linalg.solve(coefficients,constants)a,b=solutiona=round(a)b=round(b)verifyX=a*xA+b*xBverifyY=a*yA+b*yB# Check if the solution is validif0<=aand0<=bandverifyX==xPrizeandverifyY==yPrize:returnint(3*a+b)exceptnp.linalg.LinAlgError:passreturn-1# No valid solution found
Posté par syj .
En réponse au journal Advent of code 2024.
Évalué à 2.
Dernière modification le 11 décembre 2024 à 09:40.
Hier, je l'ai pris de travers :)
J'ai fait un dijkstra pour résoudre la première partie.
Ce qui n'était pas du tout adapté à la partie 2, j'ai du repasser en récursion basique ensuite.
Si j'avais pris ce choix, je pense que je faisais les 2 parties en moins de 20min
Perso, je trouve que c'est très bien pour les juniors ou quand tu découvres un nouveau framework/nouvelle techno.
Par contre pour mon usage, c'est contre productif. Les suggestions autre que les choses simple me coupe dans mon file de pensée. Ça me fait comme une sorte d'interruption et ça me perturbe plus qu'autre choses.
Résultat, c'est l'inverse. Ça me rend moins productif.
Après, je ne l'utilise pas au quotidien. Je l'utilise en général quand je travaille à quatre main sur le poste d'un junior. Donc peut-être que c'est un manque de pratique.
J'ai bien aimé la première partie du prechall.
Cela m'a rappelé l'époque où pour tricher dans les jeux. On allait modifier la mémoire ou le code.
La deuxième partie est en python. Et c est ce qui m a fait perdre beaucoup de temps.
C'est un classique des challenges de programmation mais je l'ai pris de travers…
Les catégories introduction sont en général à la portée de tous.
En général, les 1 étoiles me prennent en général 1 à 4h.
Au-dessus, les 2 étoiles, j arrive à en avoir quelques une
Les 3 étoiles, je ne suis pas sûr d en avoir eu une pendant le concours mais je suis toujours très intéressé de découvrir les write-up une fois le concours terminé.
Je suis du même avis.
On arrive sur ce genre de phase où il y a une restructuration de l'activité.
Mais ça ne va pas durer.
Il faudra probablement apprendre à revaloriser ses compétences ou revoir ses préférences techniques.
Mais dans l'ensemble l'IA va augmenter la taille des SI et leur complexité.
Résultat, on va passer moins de temps à coder et plus de temps en réunions de coordination.
Les véritables compétences à revaloriser. Ça va être :
- Les softskills: organisation, la motivation, la communication et le sens du service
- la modélisation système
- L'administration système.
Je trouve que ma condition de sortie est un peu moisie mais dans l'ensemble.
En gros, j'arrête le programme quand j'arrive à une contraction à 2 noeud avec 3 lien qui sont les 3 liens à couper.
C'était la solution attendu. Je n'ai pas cherché plus loin.
# Jour 25
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
C'est null. D'un point de vue niveau, c'est digne des premiers jours.
Dans l'ensemble, l'ensemble les exos sont beaucoup plus simple que les autres années.
Hormis le 21, je n'ai eu aucune difficultés. Et encore, c'est de ma faute. Je me suis bloqué sur une mauvaise piste.
Je regrette qu'il n'y a eu aucun exercice avec de la 3D du niveau du 24 de 2023 ou du niveau 22 de 2021.
Pareil, on n'a pas eu de traditionnel problème de séquence de motif sur un plan 2D …
Aucun problème de plan infini.
# Jour 24
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
Pour la partie 1, il suffit de suivre les instructions et valider les TU.
Pour la partie 2, je pense que je n'ai pas choisie la solution la plus rapide. Je mets environ 1min pour trouver la solution.
Je fais une fonction recursive qui va descendre à une profondeur de 44.
En gros, je vais valider l'addition de 2 entiers en commençant par les bits de poids faible jusqu'au bit de poids fort.
Quand j'identifie une erreur j'applique une permutation de sortie.
Pour valider, l'addition de 2 entiers, je ne considère pas tous les entiers 244. çà serait trop long.
Je construits des additions particulières en binaires qui vont valider toutes les retenus à la profondeur ou je suis. A chaque addition , je valide la commutativité de mon addition.
Par exemple , à la profondeur 3
1
1
1
11
1
111
Mais je vais aussi valider le merge de nombre binaire sans retenu et je vérifie encore la commutativité.
1
0
10
101
Bien paramétré cette fonction de validation a été déterminant car c'est elle qui garantit qu'au fur et à mesure de l'exploration des combinatoire possible , je n'engendre pas de régression dans les chiffres et çà me permet de déterminer rapidement une impasse dans le choix de la permutation
L'autre point important, c'est quand on détecte une anomalie, je vais déterminer les bits concernés et en déduire les portes éligibles à la permutation.
çà limite mon exploration.
[^] # Re: jour 23 - cracra
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
Ce n'est vraiment pas terrible comme performance :)
En gros à la lecture, je charge mes map & mes liens.
Puis, je regroupe mes éléments.
A la fin, je filtre pour trouver le plus gros groupe.
Je fais 215ms
et si je répète l'opération plusieurs fois , je descends à 15ms pour le même traitement.
[^] # Re: 22ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1. Dernière modification le 23 décembre 2024 à 10:16.
Il n’était pas vraiment intéressant.
Pareil, j’ai suivi les instructions. J’ai été dessus quand je me suis rendu compte que le but de la deuxième partie n’était pas de trouver le secret initial ou un truc du genre.
Je n’ai pas cherché à optimiser, j’ai tout stocker dans un new long[2500][2001]
Puis, j’ai distribué dans une map
[^] # Re: 21ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2. Dernière modification le 23 décembre 2024 à 10:03.
J'ai lutté sur celui-ci… presque 9h.
Pour la partie 1, j'ai tenté trouver un ordre dans les mouvements qui était toujours valide via un sort.
Finalement, je m'étais rabattu sur une fonction qui donnait tous les mouvements possibles.
Pour la partie 2, mon code de la partie 1 explosait même pour un chiffre à profondeur de 4.
Je me suis donc douté qu’il fallait faire un min. J’ai rapidement résolut ce problème avec un cache pour la programmation dynamique.
Par erreur, je pensai que çà exploserai en temps. Si je considérai tous les mouvements d’une case à l’autre.
Donc, j’ai tenté de chercher une distribution qui marchait dans tous les cas. J’ai réussi à trouver une combinaison qui valider pour la profondeur 2 et 3 pour les 2 jeux de test (j’ai obtenu la validation à 3 avec mon code de la partie 1) mais bien sûr, çà ne fonctionnait pas en profondeur 25. Il y a un cas non optimum qui doit apparaitre.
J’ai finalement tenté d’envisager tous les chemins possibles et j’ai été surpris de voir que cela marchait.
Comme quoi, quand on part sur une mauvaise piste, on bloque dessus.
[^] # Re: 18ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2.
Pour la première partie, j ai fait un simmle dijkstra.
Pour la deuxième partie, j ai brute force ce dernier à chaque pixel. J étais un peu déçu car je m attendais à une deuxième bien plus complexe.
Si le problème de performance aurait été plus complexe. En demultipliant la map d input. J aurai probablement tenter. De conserver le path dans mon dijkstra. De cette manière, j aurai pu déterminer rapidement les cases à mettre en jour quand c est dernier sont affecté par la mise à jour…
[^] # Re: 17ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2.
Hello,
J'ai procédé de cette manière pour la partie 2.
Ce matin pendant le travail, j'ai tenté de brute-force, je suis monté à plusieurs milliard de possibilité testé :O)
Ce midi:
J'ai modifié mon Engine pour qu'elle affiche le code Java équivalent à chaque opération.
Sur la base du code Java et l'impression du résultat en binaire
Que le bit de A était consommé progressivement par le programmme pour construire la sortie.
J'ai alors compris que le programme avançait par paquet de 3 à 6 bits.
J'avais presque la réponse ce midi. Je trouvais un A qui me donnait le bon résultat un chiffre de plus ",2" :)
Ce soir:
J'ai revu plein de fois de mon algo pour m’apercevoir que j'avais merdé un <= en < dans ma fonction de contrôle progressif.
Résultat, il me trouvait toujours un resultat matchant avec un chiffre de plus :O)
[^] # Re: jour 16
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
Ce n'est pas un simple Dijkstra.
Perso , j'ai du combiner le déplacement & la rotation.
Au final même pour simplifier la partie 2, j'ai revu mon algo pour considérer la rotation comme un mouvement.
Ensuite pour la partie 2, j'utilise la map de poids de la partie 1.
Je pars du start et je parcours en profondeur ma map de poids.
Je passe d'un poids à l'autre récursivement , si le poids d déplacement ou une rotation correspond au poids minimum que j'avais constaté.
[^] # Re: 14ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
Pour la partie 2, j'ai opté pour un algo simple.
Je compte le nombre de sapin avec au moins un autre adjacent.
Ce nombre change à chaque tour. A chaque fois que je trouvai un maximum. J'affiche la carte.
A un momemt le premier maximum affiche le sapin.
# 13ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 3.
Aujourd'hui, je me suis dit que c'était le bon jour pour essayer une IA. Voir ce que cela donnerai.
Je l'ai fait d'abord en Java en utilisant un Mistral (medium) car j'étais persuadé qu'il arriverait à me donner la bonne réponse.
Après 10min à debug le code, j'avais la bonne réponse pour la première partie.
Pour la deuxième partie , je lui ai demandé d'utiliser Apache Commons Math. En soit ,le code était correcte.
Il y avait juste < 100 qui était resté, et il y avait un problème de cast à la sortie Apache Commons Math , où on sort des Double qu'il faut arrondir et non trunc.
Vu que j'étais persuadé que j'aurai été plus vite avec Python. J'ai fait aussi l'exercice en python avec numpy :)
J'ai aussi utilisé une IA pour voir et çà fonctionne.
Par contre, bizarrement, il gérait encore plus mal la lecture des données que j'ai du aussi réecrire complétement.
[^] # Re: 12ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 1.
193ms première évaluation
1,3ms pour la 100ème évaluation (Java , c'est du Diesel)
[^] # Re: 12ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2.
Je n'y avais pas pensé. J'ai utilisé une méthode différentes
J'identifie les pièces sous forme d'un Set.
Pour identifier les côtés, je détermine la bordure & la direction qui a servi à déterminer cette bordure. Cela me donne un Set
Je regroupe les éléments de ce Set par exploration des adjacents de même directions. Le nombre groupe identifié correspond à mon nombre de côté.
[^] # Re: 11ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2. Dernière modification le 11 décembre 2024 à 17:39.
En fait, c'est moi qui avait du faire un cast en Int. Cela tenait bien dans un Long.
[^] # Re: 11ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 3. Dernière modification le 11 décembre 2024 à 13:48.
u64, c'est pour unsigned 64 ?
Car en Java, j'ai été obligé de passer tout en BigInteger car j'avais un dépassement et j'obtenais des chiffres négatifs
Mais bon Java , tu ne peux pas faire de unsigned … donc peut être qui me manquait uniquement le 264 :)
# 11ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2.
Si je l'avais fait en python. Je pense que j'aurai été plus vite environ 40min.
J'ai été obligé de repasser tout en BigInteger pour la 2ème partie.
La partie 2 : je mets 191ms pour trouver la solution ;-)
[^] # Re: 10ème jour
Posté par syj . En réponse au journal Advent of code 2024. Évalué à 2. Dernière modification le 11 décembre 2024 à 09:40.
Hier, je l'ai pris de travers :)
J'ai fait un dijkstra pour résoudre la première partie.
Ce qui n'était pas du tout adapté à la partie 2, j'ai du repasser en récursion basique ensuite.
Si j'avais pris ce choix, je pense que je faisais les 2 parties en moins de 20min
Pour la partie 2 : 134ms (jvm lancé)
# Est-ce qu'il y a moyen de tester si l'imprimante réseau est sujette à cette faille ?
Posté par syj . En réponse au journal Faille d'exécution de code à distance dans cups. Évalué à 4.
Hello,
J'ai une imprimante en wifi sur mon réseau.
Est-ce qu'il y a moyen de tester si l'imprimante réseau est sujette à cette faille ?
# Ça dépend
Posté par syj . En réponse au journal j'aime bien l'auto-complétion par IA (Github Copilot). Évalué à 2.
Perso, je trouve que c'est très bien pour les juniors ou quand tu découvres un nouveau framework/nouvelle techno.
Par contre pour mon usage, c'est contre productif. Les suggestions autre que les choses simple me coupe dans mon file de pensée. Ça me fait comme une sorte d'interruption et ça me perturbe plus qu'autre choses.
Résultat, c'est l'inverse. Ça me rend moins productif.
Après, je ne l'utilise pas au quotidien. Je l'utilise en général quand je travaille à quatre main sur le poste d'un junior. Donc peut-être que c'est un manque de pratique.
[^] # Re: Pre challenge
Posté par syj . En réponse au journal France Cybersecurity Challenge (FCSC) 2024 va commencer. Évalué à 1.
J'ai bien aimé la première partie du prechall.
Cela m'a rappelé l'époque où pour tricher dans les jeux. On allait modifier la mémoire ou le code.
La deuxième partie est en python. Et c est ce qui m a fait perdre beaucoup de temps.
C'est un classique des challenges de programmation mais je l'ai pris de travers…
[^] # Re: Même pour les quiches (comme moi)
Posté par syj . En réponse au journal France Cybersecurity Challenge (FCSC) 2024 va commencer. Évalué à 3.
Les catégories introduction sont en général à la portée de tous.
En général, les 1 étoiles me prennent en général 1 à 4h.
Au-dessus, les 2 étoiles, j arrive à en avoir quelques une
Les 3 étoiles, je ne suis pas sûr d en avoir eu une pendant le concours mais je suis toujours très intéressé de découvrir les write-up une fois le concours terminé.
[^] # Re: son altesse sérénissime
Posté par syj . En réponse au journal Atlassian SaaS.... Évalué à 2. Dernière modification le 13 février 2024 à 13:29.
Je confirme , je me suis trompé.
Je fais en général beaucoup fautes mais c'est encore pire que je suis énervé.
Trop tard pour changer.
# 20 M €
Posté par syj . En réponse au journal Combien pour un algorithme de détection de piscines sur les photos aériennes ?. Évalué à 6. Dernière modification le 09 février 2024 à 08:56.
20 M€ c'est le coup du dev.
La maintenance annuelle, elle est à combien ?
[^] # Re: L'informatique c'est vaste
Posté par syj . En réponse au journal [Trolldi] La Big Tech vous souhaite une très belle réflexion existentielle. Évalué à 4.
Je suis du même avis.
On arrive sur ce genre de phase où il y a une restructuration de l'activité.
Mais ça ne va pas durer.
Il faudra probablement apprendre à revaloriser ses compétences ou revoir ses préférences techniques.
Mais dans l'ensemble l'IA va augmenter la taille des SI et leur complexité.
Résultat, on va passer moins de temps à coder et plus de temps en réunions de coordination.
Les véritables compétences à revaloriser. Ça va être :
- Les softskills: organisation, la motivation, la communication et le sens du service
- la modélisation système
- L'administration système.
# Algorithme de Karger
Posté par syj . En réponse au message Advent of Code 2023, jour 25. Évalué à 2.
Pour le dernier jour, j'ai tenté plusieurs solutions naïve avant de chercher un algorithme qui pouvait répondre à mon problème.
Je suis tombé sur l'algorithme de Karger qui me semblait relativement simple à implémenter.
https://fr.wikipedia.org/wiki/Algorithme_de_Karger
Je trouve que ma condition de sortie est un peu moisie mais dans l'ensemble.
En gros, j'arrête le programme quand j'arrive à une contraction à 2 noeud avec 3 lien qui sont les 3 liens à couper.
C'était la solution attendu. Je n'ai pas cherché plus loin.
[^] # Re: J'ai aussi utilisé le Z3 theorem prover.
Posté par syj . En réponse au message Advent of Code 2023, jour 24. Évalué à 1. Dernière modification le 28 décembre 2023 à 23:31.
Je viens de voir que j'avais oublié de corriger le problème de séparation des bloques
il faut le lire. il manque un saut ligne est un commentaire.
(En espérant que c'est plus clair)