Journal Calendrier de l'Avent du code

PostĂ© par (site web personnel) . Licence CC By‐SA.
Étiquettes :
29
22
nov.
2022

Cher Nal,

Connais-tu le calendrier de l'Avent du Code ?

C'est un calendrier de l'Avent, qui commence au 1er dĂ©cembre et s'achĂšve Ă  NoĂ«l. Chaque jour, un nouveau casse-tĂȘte de programmation, en deux Ă©tapes : une simple, puis une complication du mĂȘme.

Ce qui fait Ă  mes yeux une bonne part de son intĂ©rĂȘt, c'est qu'il est conçu comme une histoire oĂč le joueur incarne le PĂšre NoĂ«l, et oĂč les programmes dĂ©veloppĂ©s permettent de rĂ©soudre des situations concrĂštes plus ou moins cocasses ou tirĂ©es par les cheveux.

Les problĂšmes eux-mĂȘmes commencent doucement, puis peuvent devenir assez difficiles au fil des jours, parfois mĂȘme entre les deux Ă©tapes du problĂšme du jour, oĂč l'approche initiale peut s'avĂ©rer irrĂ©alisable pour la version compliquĂ©e et nĂ©cessiter de repenser l'approche de rĂ©solution.

Les annĂ©es prĂ©cĂ©dentes, j'avais trouvĂ© ça passionnant au point d'en ĂȘtre addictif. Difficile de lĂącher son ordinateur pour rejoindre la fĂȘte en famille, quand il reste encore un problĂšme Ă  rĂ©soudre. Ah, et je n'ai jamais pris le temps de rĂ©ussir Ă  tout rĂ©soudre, d'ailleurs.

  • # Vivement , le 1

    PostĂ© par . É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: Vivement , le 1

      PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  2.

      Je ne sais pas si j'aurai le temps (je voulais déjà faire du NaNoWriMo pour finaliser mes journaux et autres écrits en cours mais finalement nada). Ceci dit, un groupe LFR est une trÚs bonne idée que j'appuie.

      "It is seldom that liberty of any kind is lost all at once." ― David Hume

      • [^] # Re: Vivement , le 1

        PostĂ© par . ÉvaluĂ© Ă  5.

        J'ai créé un leadboard
        1844559-f65dbf07
        si vous vous voulez le rejoindre, il faut l'ajouter dans votre interface sur adventofcode

        • [^] # Re: Vivement , le 1

          PostĂ© par (Mastodon) . ÉvaluĂ© Ă  4.

          Je viens de voir le message, j'ai rejoins alors :)
          Bon, par contre le leaderboard a la valeur qu'on lui donne : hors de question de me lever à 6h du matin pour faire ça parmi les premiers...

          • Yth.
          • [^] # Re: Vivement , le 1

            PostĂ© par (site web personnel) . ÉvaluĂ© Ă  6.

            Pareil pour moi, surtout que j'aime faire du beau code, et que ça ne va pas bien avec l'idée de faire la course.

            Mais pas d'inquiétude, on devrait finir par avoir des problÚmes qu'on sera déjà content de parvenir à résoudre tout court, au bout d'un moment. :-)

            • [^] # Re: Vivement , le 1

              PostĂ© par . É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: Vivement , le 1

            PostĂ© par . É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 (Mastodon) . ÉvaluĂ© Ă  3.

              Et je suis repassé tout juste devant avec encore un nouvel inscrit !
              C'est rigolo remarque de voir ça évoluer :)

              Tu remarqueras que si on trie par global score on est tous à égalité à 0 hein...

              • Yth.
              • [^] # Re: Vivement , le 1

                PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  2. DerniĂšre modification le 10 dĂ©cembre 2022 Ă  00:46.

                si on trie par global score on est tous à égalité à 0

                Normal, il est écrit que « Getting a star first is worth 100 points, second is 99, and so on down to 1 point at 100th place. » (il y a cent points distribués aux cent premiÚres réponses.) J'en déduis que personne dans le groupe n'est au taquet pour répondre vers 5h je crois. (le Time à >24h dans la vue détaillée...)

                "It is seldom that liberty of any kind is lost all at once." ― David Hume

  • # l'Avent, qui commence au 1er dĂ©cembre ?

    PostĂ© par . ÉvaluĂ© Ă  2.

    L'Avent commence dimanche 27 novembre, cette année.
    Il faudrait supprimer la virgule du journal, SVP.

    • [^] # Re: l'Avent, qui commence au 1er dĂ©cembre ?

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4.

      C'est vrai, ça commence ce dimanche. Seulement, comme la quasi-totalité des calendriers de l'Avent, celui-ci commence le 1er décembre, c'est dans doute plus facile ainsi pour son auteur.

      Avec ou sans la virgule, la phrase reste ambiguë, elle peut se comprendre comme signifient que ce calendrier commence le 1er décembre, ce que j'ai bien sûr voulu dire. Et elle peut se lire comme vient dire que l'Avent commence le 1er, ce qui est faux.

  • # Ada corse le tout

    PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  7.

    AdaCore promet de donner 10$ par contribution (traduction hasardeuse) en Ada Ă  l'association Ada Developers Academy Ă  concurrence de 5 000$.

    This year we want to join the fun, and bring a little bit of extra motivation for a good cause. For each person completing one of the Advent of Code challenges using the Ada programming language, AdaCore will donate 10ăƒ‰ăƒ« to the Ada Developers Academy, up to a total of 5,000ăƒ‰ăƒ«. And for those willing to go an extra mile, AdaCore will donate 20ăƒ‰ăƒ« if the solution is implemented in SPARK with at least proof of absence of run-time errors (a.k.a. Silver level).

    Pour rappel, AdaCore est une société qui vend des services autour du compilateur en Ada, GNAT, et l'Ada Developers Academy est un organisme à but non-lucratif dont l'objet est de former au développement logiciel plus spécifiquement des femmes ou des personnes transgenre qui pourraient avoir un accÚs difficile aux structures d'enseignement traditionnel (du fait de leurs origines, de la pauvreté, etc.).

    Je n’ai aucun avis sur systemd

    • [^] # Re: Ada corse le tout

      PostĂ© par . ÉvaluĂ© Ă  2.

      Je croyais qu'il fallait juste donner une réponse aux énigmes du jour et non montrer son code, du coup comment ça marche le défi avec AdaCore ?
      J'ai codé avec ada95 aux débuts des internets mondiaux, ça m'intéresserait d'en refaire pour la bonne cause.

      Sinon je confirme que c'est trÚs fun, perso un truc m'échappe pour la deuxiÚme partie du jour 6 de 2021, je vous laisse le découvrir.

      Jour6 2021

      • [^] # Re: Ada corse le tout

        PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  3.

        pour ma part, j'ai déjà été spoil...

        "It is seldom that liberty of any kind is lost all at once." ― David Hume

      • [^] # Re: Ada corse le tout

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4.

        Ça, c'est typique des problĂšmes avec une rĂ©solution intuitive pas optimale, et qui devient intenable pour la seconde partie.

        PlutĂŽt que de stocker une liste de tous les poissons avec leur compteur interne, l'astuce est de plutĂŽt stocker, pour chaque valeur possible de compteur interne (de 0 Ă  8), le nombre de poissons qui ont cette valeur-lĂ .

        #! /usr/bin/python3
        fishes = [0] * 9 # for each value of their internal timer, the number of fishes with that value
        with open("6.in") as f:
         for word in f.read().rstrip().split(','):
         fishes[int(word)] += 1
        for day in range(256):
         new_fishes = [0] * 9
         for i, n in enumerate(fishes):
         if i == 0:
         new_fishes[6] += n
         new_fishes[8] += n
         else:
         new_fishes[i - 1] += n
         fishes = new_fishes
        print(sum(fishes))
        • [^] # Re: Ada corse le tout

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  1.

          Ça me rappelle de bons souvenirs !

          J'avais pensé à une solution assez efficace à l'aide de la fonction rotate de la deque Python.

        • [^] # Re: Ada corse le tout

          PostĂ© par . ÉvaluĂ© Ă  2. DerniĂšre modification le 01 dĂ©cembre 2022 Ă  21:21.

          j'adore ces jours lĂ , quand la solution naĂŻve ne scale pas.

          solution naĂŻve :

          L=list(map(int,__import__("sys").stdin.read().split(",")))
          for i in range(80):
           L = [ (l-1) for l in L ]
           n = sum( l < 0 for l in L)
           L = [ l if l>=0 else 6 for l in L ]
           L += [8]*n
          print(len(L))

          solution qui scale, mĂȘme solution que toi en gros :

          D ={ i:0 for i in range(9) }
          for l in list(map(int,__import__("sys").stdin.read().split(","))):
           D[l]+=1
          for i in range(256):
           D = { i-1:D[i] for i in range(9) }
           D[6] += D[-1]
           D[8] = D[-1]
           del D[-1]
          print(sum(D.values()))
      • [^] # Re: Ada corse le tout

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  5.

        Je croyais qu'il fallait juste donner une réponse aux énigmes du jour et non montrer son code, du coup comment ça marche le défi avec AdaCore ?

        C'est expliquĂ© dans leur annonce, Ă©videmment il faut montrer le code pour chaque casse-tĂȘte.

  • # C'est parti !

    PostĂ© par (site web personnel) . ÉvaluĂ© Ă  5.

    Et voilà, cette année, le PÚre Noël a été invité par ses lutins à participer à leur récolte annuel de fruits étoilés destinés à nourrir les rennes et leur apporter l'énergie magique nécessaire à la tournée de Noël.

    We wish you a merry Christmas and a happy hacking!

    • [^] # Re: C'est parti !

      PostĂ© par . É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: C'est parti !

        PostĂ© par . ÉvaluĂ© Ă  5.

        Je ne suis pas sûr qu'on puisse dire qu'il y a moins de joueur avec ces stats, il faudrait comparé 2021 au jour 4, je pense que dans 2 semaines, il y a aura beaucoup plus de monde qui aura fait la premiÚre question.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: C'est parti !

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4.

        Sujets plus simple, je suis d'accord... pour le moment. Ça pourrait se corser d'un coup !

  • # meilleur que le chocolat

    PostĂ© par . ÉvaluĂ© Ă  5.

    J'ai choisi la facilitĂ© comme chaque annĂ©e en partant sur du AWK ou du Python. J'ai encore le temps de changer d'avis et essayer un autre langage. Mais bon faut pas se leurer, les langage de scripting comme ceux lĂ  sont les plus efficaces pour juste trouver une rĂ©ponse, sans avoir besoin de faire propre. D'ailleurs quand je regarde mon code des annĂ©es prĂ©cĂ©dentes 😳

    Aujourd'hui, 2 lignes de AWK pour résoudre les deux premiers problÚmes. On commence doucement comme chaque année.

  • # Le 16/12

    PostĂ© par . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.