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.).

    ¬ę‚ÄĮTak ne veut pas qu ľon pense √† lui, il veut qu ľon pense‚ÄĮ¬Ľ, Terry Pratchett, D√©raill√©.

    • [^] # 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.