steph1978 a écrit 3367 commentaires

  • # garder la rubrique, imposer une petite description

    Posté par  . En réponse au sondage Quel futur vous paraît pertinent pour la rubrique « Liens » de Linuxfr ? . Évalué à 10.

    Cela reste intéressant (quoi que quand c'est un copier coller de HN ou Lobsters, ça m'intéresse moins) en particulier pour en discuter.

    Mais pour éviter que les auteur(e)s fassent juste un dump de leur flux RSS, il faudrait imposer (et déjà permettre) de mettre une petite une description.

    Pour moi c'est différent d'un journal qui doit exprimer un point de vue personnel - opinion, retour d'expérience - et être un peu plus long.

    Garder une rubrique séparée permet aussi de ne pas les afficher en homepage.

  • [^] # Re: titre obscure mais outil génial

    Posté par  . En réponse au lien L'extension LireCouleur pour les élèves à besoins particulier mieux utilisable en ligne. Évalué à 2.

    pas si obscur

    Quand on a déjà la lanterne, on est pas bien placé pour dire. Après je sais que c'est le principe des liens, pas d'explication.

    En tout cas ravi de la trouvaille.

  • # NPC = Non playable characters = PNJ = Personnage non jouable

    Posté par  . En réponse au lien AI Toolkit, donnez un cerveau à vos NPCs, une librairie C++ header-only. Évalué à 3.

    .

  • # titre obscure mais outil génial

    Posté par  . En réponse au lien L'extension LireCouleur pour les élèves à besoins particulier mieux utilisable en ligne. Évalué à 5. Dernière modification le 10 janvier 2024 à 09:43.

    Ça tombe à pique.
    Il y a quelques mois je cherchais du code pour découper des mots en syllabes.
    J'en avais trouvé pour de l'anglais et encore pas terrible.

  • # sans tracker medium

    Posté par  . En réponse au lien Encore un autre générateur de site statique, mais pour les développeurs de langage de programmation. Évalué à 1.

  • [^] # Re: pour le tarot...

    Posté par  . En réponse au message faire des jeux de cartes en ligne. Évalué à 2.

    Je ne savais pas pour le tarot, mais idem pour la belote. Ça permet de sortir des jeux plus intéressant au fil du temps. Puisque ce qui fait la force d'un jeu à la belote est le fait d'avoir beaucoup de cartes d'une même couleur.

  • [^] # Re: Debian LXDE sur Samsung N210.

    Posté par  . En réponse au message Faire revivre un NETBOOK ?!. Évalué à 2.

    Je plussois.

    • Tu prends un clé usb de qques GB.
    • Tu installes ventoy dessus
    • Tu copies la Debian netinstall 32bit dessus
    • Tu boot en usb
    • Tu install avec soit XFCE soit LXDE comme environnement graphique
  • [^] # Re: backup

    Posté par  . En réponse au lien Pypy passe à Git + Github. Évalué à 3.

    C'est vrai.

    J'ai pas de leçon à donner à un projet comme pypy mais j'aurai plutôt fait un miroir fermé sur GH avec message disant "viendez sur notre forge" (gitea, gitlab, forgejo younameit) quitte à proposer un social login GH pour les contributeurs qui ne veulent pas créer un nouveau compte.

  • [^] # Re: Besoin de précisions

    Posté par  . En réponse au message faire des jeux de cartes en ligne. Évalué à 4. Dernière modification le 03 janvier 2024 à 00:39.

    Je dirai que ce qui se rapproche le plus est le serveur libre de jeu de carte que je vais auto-héberger et jouer avec mes amis.

    Mais si il faut coder, pas de soucis. J'aimerai juste ne pas partir de rien et ne pas passer à côté d'un projet FOSS auquel je pourrais contribuer au lieu de ramer seul.

  • # backup

    Posté par  . En réponse au lien Pypy passe à Git + Github. Évalué à 7.

    Triste constat de réalité : difficile d'échapper à l'hégémonie de GH pour attirer des contributions.

    Pensez juste à backuper le project GH. Je parle pas du repo en lui même qui est par nature décentralisé mais des issues, PR, discussions, wiki.

    Trop de repo ont été retirés par GH sur une décision arbitraire de MS/GH ou du gov US.

  • [^] # Re: Eur0p3 4 Ev3r

    Posté par  . En réponse au lien Japan to crack down on Apple and Google app store monopolies - OSnews. Évalué à 2.

    De très loin aussi. Mais quand je vois ce qui sort, je me dis que le plus fort, c'est pas le législateur mais les lobbies et des fois le lobby des consommateurs.

  • [^] # Re: Détail du staff actuel et passé

    Posté par  . En réponse au lien p3ter reprend la direction de PluXml après l'intérim de bazooka07 + v5.9 RC dispo à fins de test !. Évalué à 2.

    Perturbant ce "About" qui ne dit pas ce que le logiciel fait.
    C'est un CMS ou un SSG, c'est ça ?

  • [^] # Re: le bit de poids faible

    Posté par  . En réponse au lien la manière la plus efficace de déterminer si un nombre est pair. Évalué à 3.

    Je sais pas si ça valait une vidéo mais la blague est marrante.

  • [^] # Re: oui mais

    Posté par  . En réponse au lien Kyber, le nouveau projet open source de Jean-Baptiste Kempf (VLC). Évalué à 4. Dernière modification le 27 décembre 2023 à 21:41.

    En gros c'est VNC probablement en plus efficace.

  • [^] # Re: On aime les range, youpi, youpi !

    Posté par  . En réponse au message Advent of Code, jour 19. Évalué à 2.

    J'avais fait la partie 1.
    Mais ton code est tellement clean, j'ai repris tel quel :)

  • [^] # Re: J'ai un peu honte...

    Posté par  . En réponse au message Advent of Code, jour 18. Évalué à 2.

    Tout pareil, mas dès la première partie.
    Ce jour m'a permis de découvrir shapely.
    Qui permet aussi de beau tracés:

  • # python en 44 LoC, 110ms et 10MB RAM

    Posté par  . En réponse au message Advent of Code, jour 14. Évalué à 2. Dernière modification le 16 décembre 2023 à 02:22.

    import sys
    
    I = sys.stdin.read().splitlines()
    G = [list(l) for l in I]
    R = len(G)
    C = len(G[0])
    
    def rotate(G, F):
      for r in range(R):
        for c in range(C):
          F[c][R-1-r] = G[r][c]
    
    def tilt(G):
        for x in range(C):
            for y in range(R):
                if G[y][x] == "O":
                    for j in range(y-1,0-1,-1):
                        if G[j][x] == '.':
                            G[j][x] = "O"
                            G[j+1][x] = "."
                        else:
                            break
    
    score = lambda: sum((R-y)*row.count('O') for y,row in enumerate(G))
    
    cache = {}
    F = [['?' for _ in range(C)] for _ in range(R)]  # pre-allocate saves 10% time (no GC)
    
    end = 1_000_000_000
    i = 0
    while i<end:
        i += 1
        for j in range(4):
            tilt(G)
            if i == 1 and j == 0: print(score())  # part 1
            rotate(G, F); F, G = G, F
        h = ''.join(''.join(row) for row in G)
        if h in cache:
            period = i-cache[h]
            skip = (end-i) // period
            i += skip * period
        cache[h] = i
    
    print(score())
  • [^] # Re: Pourquoi des dictionnaires ?

    Posté par  . En réponse au message Advent of Code, jour 15. Évalué à 2. Dernière modification le 16 décembre 2023 à 00:10.

    Pour économiser 40 lignes de code ?

  • [^] # Re: En express aujourd'hui

    Posté par  . En réponse au message Advent of Code, jour 15. Évalué à 2.

    Tu m'évites un copier-coller :) Aux noms des variables près, j'ai exactement le même code.

    Reposant aujourd'hui :)

  • [^] # Re: désolé, c'est pas ma marotte

    Posté par  . En réponse au lien Vous n’écoutez pas assez de contrebasson. Évalué à 2.

    tu est le premier lésé

    C'est plus mon œil qui est lésé là :D

    Bon je taquine, c'était plus une blague sur ton pseudo et le fait que ça n'a pas grand chose à voir avec Linux et le logiciel libre.

    Mais sinon, j'ai regardé la vidéo (sur invidious quand même). Oui, ça déchire.

  • # désolé, c'est pas ma marotte

    Posté par  . En réponse au lien Vous n’écoutez pas assez de contrebasson. Évalué à 4.

    .

  • [^] # Re: Une solution assez élégante, je trouve.

    Posté par  . En réponse au message Advent of Code 2023 : Jour 10. Évalué à 2. Dernière modification le 10 décembre 2023 à 15:40.

    Chapeau pour l'astuce du doublement

  • [^] # Re: j'ai adoré

    Posté par  . En réponse au message Advent of Code 2023 : Jour 10. Évalué à 2. Dernière modification le 10 décembre 2023 à 15:17.

    Avec un lib de gestion des polygone, j'ai fini par trouver pour la partie 2.
    Mais un peu l'impression de tricher et de sortir le bazooka.

    Le code pour la partie 1:

    import sys
    
    I = sys.stdin.read().splitlines()
    G = [list(l) for l in I]
    W = len(G[0])
    H = len(G)
    
    # look for S
    S = None
    for y in range(H):
        if (x := I[y].find("S")) > -1:
            S = (x,y)
            break
    
    D = {
        'u': {
            '|': ( 0,-1,'u'),
            'F': ( 1,0,'r'),
            '7': (-1,0,'l'),
        },
        'r': {
            '-': (1, 0,'r'),
            'J': (0,-1,'u'),
            '7': (0, 1,'d'),
        },
        'd': {
            '|': ( 0,1,'d'),
            'L': ( 1,0,'r'),
            'J': (-1,0,'l'),
        },
        'l': {
            '-': (-1, 0,'l'),
            'L': (0,-1,'u'),
            'F': (0, 1,'d'),
        },
    }
    
    N = 1
    x0, y0 = S
    P = (x0+1, y0, 'r')  # start at S and go right
    for _ in range(100_000):
        x, y, d = P
        N += 1
        z = G[y][x]
        if z == 'S':
            break
        dx,dy,nd = D[d].get(z)
        P = (x+dx,y+dy,nd)
    print(N//2)

    Sinon, c'est joli

    ..............................................................................╔╗.....................................................
    .......................................................................╔╗╔╗╔╗╔╝║.....................................................
    ...........................................................╔═╗.........║╚╝╚╝║╚╗╚╗....................................................
    ..................................╔╗.......................╚╗║╔╗..╔═╗..╚╗╔═╗╚╗║╔╝....................................................
    ...............................╔══╝║..................╔╗....║╚╝║.╔╝╔╝..╔╝║.╚╗║║╚═╗...................................................
    ...............................╚═╗╔╝..╔╗..╔╗..........║╚═╗..║╔═╝╔╝╔╝...╚═╝..║║║╔═╝.......╔╗..........................................
    ...............................╔═╝║...║║..║╚╗.........╚╗╔╝╔╗║╚╗╔╝╔╝╔╗.╔═╗.╔═╝║║╚═╗╔╗.....║╚╗.........................................
    ...............................╚═╗╚╗..║║╔╗║╔╝╔╗.......╔╝╚╗║╚╝╔╝║╔╝.║║╔╝╔╝╔╝╔╗║║╔═╝║║.....╚╗║...╔╗....................................
    ..............................╔═╗║╔╝╔═╝╚╝╚╝╚╗║║.....╔╗╚╗╔╝╚═╗║╔╝║╔╗║║╚╗║.╚╗║║╚╝║.╔╝╚╗..╔╗.║║.╔╗║╚╗....╔╗.............................
    ..............................╚╗║║╚╗╚════╗╔═╝║╚╗....║╚═╝║╔╗╔╝║╚╗║║╚╝║╔╝║..╚╝╚═╗╚╗╚═╗╚╗.║║╔╝╚═╝║║╔╝....║║..╔╗.........................
    ............................╔═╗║║║╔╝╔═══╗║╚╗.║╔╝....╚══╗║║║║╔╝╔╝║║╔═╝║╔╝╔╗..╔═╝╔╝╔╗╚╗╚╗║║╚═╗╔═╝║║.╔═╗╔╝║╔╗║║╔╗.......................
    .........................╔═╗╚╗║║║║╚╗║╔═╗║║╔╝╔╝╚╗.╔╗╔╗╔╗║║║║║╚╗╚╗╚╝╚╗.║╚╗║╚╗╔╝╔╗╚═╝║╔╝╔╝║╚╗.║╚╗╔╝╚╗║╔╝╚╗╚╝╚╝║║║╔╗.....................
    ..................╔╗╔══╗.╚╗╚═╝║║║║╔╝╚╝╔╝╚╝║╔╝╔╗╚╗║╚╝║║╚╝╚╝╚╝╔╝╔╝╔══╝╔╝╔╝╚╗║╚═╝╚═╗╔╝╚╗╚═╝╔╝╔╝╔╝║╔═╝║║..║╔══╗╚╝╚╝╚╗....................
    .................╔╝║╚═╗║╔╗╚══╗╚╝╚╝║╔╗.╚══╗╚╝╔╝╚═╝╚═╗║╚═╗╔═╗╔╝.╚╗║.╔═╝╔╝╔═╝╚═╗.╔╗║╚═╗╚══╗║╔╝╔╝.║║╔╗║╚╗╔╝╚═╗║╔═╗╔═╝....................
    ...............╔╗╚╗║╔╗║║║║╔═╗║╔╗╔═╝║╚══╗╔╝╔═╝╔╗╔╗╔╗║║╔╗╚╝╔╝╚╗╔╗║╚╗║╔═╝.╚══╗╔╝╔╝║║╔═╝.╔╗║║╚╗╚══╝║║║╚╗║║╔══╝╚╝.╚╝......................
    ...............║║╔╝║║║║╚╝║╚╗║╚╝║╚╗.╚═╗╔╝╚╗║╔═╝║║║║║║║║║╔╗╚╗╔╝║║║╔╝║║.╔╗.╔═╝╚╗╚╗║║║╔╗╔╝║║║╔╝╔═══╝║║╔╝╚╝╚══════╗╔╗.....................
    .........╔╗╔╗.╔╝║╚╗║║╚╝╔═╝╔╝╚═╗╚╗╚╗╔╗║╚╗╔╝╚╝╔╗║║║║╚╝║║║║║╔╝║╔╝║║╚═╝╚═╝╚╗╚═╗╔╝╔╝║║║║║╚╗╚╝╚╝╔╝.╔╗.║║╚══╗╔══════╝║╚═╗...................
    .......╔═╝╚╝║.╚╗╚═╝║╚═╗║╔╗╚╗╔═╝.╚╗║║╚╝╔╝╚╗╔═╝╚╝║╚╝╔╗║║║║║╚╗║║╔╝╚╗╔═════╝.╔╝╚╗╚╗║║║║║╔╝╔═══╝╔╗║╚═╝║╔╗╔╝╚═╗╔╗╔╗.║╔═╝.╔═╗...............
    .......╚═══╗║╔╗╚═╗╔╝╔╗║║║╚╗║╚══╗╔╝║╚╗╔╝╔═╝╚╗╔═╗╚══╝║║║║║║╔╝║║╚╗╔╝║╔╗╔╗.╔╗╚═╗╚╗║║║║║║║╔╝.╔╗.║║║╔═╗║║╚╝╔══╝║║║║╔╝║...╚╗║...............
    ...........║║║╚╗╔╝╚╗║╚╝╚╝╔╝║╔══╝╚╗╚═╝║.║╔╗╔╝║╔╝╔╗╔╗║╚╝╚╝║╚╗║║╔╝║╔╝║╚╝╚╗║╚═╗╚╗║║║║║║║║╚╗╔╝╚╗║║║║.║║╚═╗╚══╗║╚╝╚╝╔╝....║║...............
    .....╔╗╔╗╔═╝╚╝╔╝╚═╗║╚═╗╔╗╚═╝╚╗╔═╗╚══╗╚╗╚╝║║╔╝╚╗║║║║╚═══╗╚═╝╚╝╚╗║║.╚══╗║╚╗╔╝╔╝╚╝║║╚╝║║╔╝║╔╗╚╝╚╝╚╗╚╝╔╗║╔══╝║╔═══╝╔═╗..║║...............
    .╔══╗║║║║╚═══╗╚╗╔╗║║╔╗╚╝╚══╗╔╝║╔╝.╔╗║╔╝╔═╝║║╔═╝║║║║╔╗╔╗╚═════╗║║╚═╗.╔╝║╔╝╚╗║╔═╗║╚═╗║║╚╗╚╝║╔═══╗╚╗╔╝╚╝╚═╗╔╝║╔╗╔╗║╔╝╔╗║║...............
    .╚═╗╚╝╚╝╚═══╗╚╗║║║║║║║╔═╗╔═╝╚═╝╚╗╔╝╚╝╚╗╚═╗║║╚═╗║╚╝║║╚╝╚╗╔═══╗║╚╝╔═╝╔╝╔╝╚╗╔╝╚╝╔╝╚╗.║║║╔╝╔╗║║╔╗.╚═╝║╔════╝╚╗║║║║║║║.║║║╚══╗╔╗..........
    ...╚══╗╔═╗╔╗╚═╝╚╝╚╝║║║╚╗║╚══╗╔══╝╚══╗╔╝╔╗║║║╔═╝╚═╗║╚╗╔═╝╚══╗║║╔═╝╔╗║╔╝╔═╝╚╗╔╗╚═╗║╔╝╚╝╚═╝╚╝╚╝╚╗╔╗.║╚╗╔╗.╔╗║╚╝║║╚╝║╔╝╚╝╔══╝║║╔╗........
    ..╔═══╝╚╗║║╚══════╗║║║.║╚╗╔╗║╚═╗.╔╗╔╝╚╗║║║║║╚╗.╔═╝╚═╝║╔╗╔══╝║║║╔╗║║║╚═╝╔╗╔╝║╚╗╔╝║╚══╗╔═╗╔═══╗║║╚╗║╔╝║╚╗║╚╝╔╗║║╔═╝║╔══╝╔═╗║║║╚╗.......
    ..║╔╗╔═╗║╚╝.╔═════╝╚╝╚╗╚╗║║╚╝╔╗║╔╝╚╝╔╗╚╝╚╝║╚╗╚╗╚═══╗╔╝║║╚══╗║║║║║║╚╝╔╗╔╝╚╝.╚╗║╚╗╚═╗.║║.║╚╗╔╗╚╝╚╗╚╝╚╗╚╗║║╔═╝╚╝║║╔╗║║.╔╗╚╗║║╚╝╔╝.......
    ..║║╚╝.╚╝...╚╗╔═╗╔╗╔═╗╚╗║║╚╗╔╝╚╝╚═╗╔╝╚═╗╔═╝╔╝╔╝╔╗╔═╝╚╗║╚╗╔╗║╚╝╚╝║║╔═╝╚╝╔╗.╔═╝║.╚╗╔╝╔╝╚╗╚═╝║╚╗.╔╝╔══╝╔╝╚╝╚╗╔══╝║║╚╝╚╗║╚╗║╚╝╔═╝........
    ..╚╝.....╔═╗╔╝║.╚╝╚╝.╚╗║║║.║║╔╗.╔╗╚╝╔══╝╚╗╔╝╔╝.║║║╔╗╔╝╚╗║║║╚╗╔═╗║║╚══╗╔╝╚╗╚═╗║╔═╝╚╗║╔╗╚╗.╔╝╔╝╔╝╔╝.╔╗╚═╗╔═╝║╔══╝║╔══╝╚╗║║╔═╝.╔╗╔╗.....
    .........╚╗║╚═╝╔══════╝╚╝╚═╝║║╚╗║╚═╗╚══╗╔╝╚╗║╔═╝║║║╚╝╔═╝║║║.╚╝.║║║╔═╗║╚═╗║╔╗║║╚═╗╔╝╚╝╚╗╚╗╚╗║.║╔╝╔═╝║╔╗║╚═╗║║╔╗.║╚╗╔══╝║║╚═══╝╚╝╚╗....
    ..........║╚╗╔╗╚═══════╗╔╗╔╗╚╝╔╝╚═╗║╔╗╔╝╚╗╔╝║╚═╗║║╚═╗╚═╗║║║╔╗.╔╝╚╝╚╗╚╝.╔╝║║╚╝║╔╗║╚╗.╔╗╚╗╚═╝╚╗║╚╗╚═╗║║╚╝╔═╝║╚╝║╔╝╔╝╚╗╔╗║║╔════╗╔╗║....
    ..........╚╗╚╝╚════════╝║╚╝║╔╗╚╗╔╗║║║║╚╗╔╝╚╗║╔═╝║║╔═╝╔═╝╚╝╚╝║╔╝╔═══╝.╔╗╚╗║╚═╗╚╝║║╔╝╔╝╚╗║╔═══╝║╔╝╔╗║║╚═╗╚══╝╔═╝║╔╝╔╗╚╝║╚╝╚═╗..╚╝╚╝....
    ...........╚═══════════╗╚╗╔╝║╚╗║║║║║║║╔╝║╔╗║╚╝╔═╝║╚═╗╚════╗╔╝╚╗╚╗╔══╗║║╔╝║╔╗║╔╗║║╚╗╚═╗╚╝║╔╗╔╗║╚═╝║║║╔╗║╔═══╝.╔╝╚═╝╚╗╔╝╔═══╝.╔╗..╔╗...
    ..........╔═══════════╗║╔╝║╔╝╔╝║║║║║║║╚╗║║║╚╗╔╝╔╗║╔═╝╔╗.╔╗║║..║╔╝╚╗╔╝║║║╔╝║║╚╝║║║╔╝╔╗║╔═╝║║║║╚╗╔═╝║║║║║║╔═══╗╚╗╔═══╝║╔╝╔══╗.║╚╗╔╝║...
    ..........╚╗╔═╗╔╗╔═══╗║╚╝╔╝║.╚╗╚╝╚╝║║║╔╝║║║╔╝╚╗║║║╚═╗║║╔╝║║╚╗╔╝╚╗╔╝╚╗║║║╚╗║╚╗╔╝║║╚╗║║║║╔╗║║║║╔╝║╔═╝║║╚╝╚╝╔╗╔╝╔╝╚═╗╔╗║╚═╝╔╗╚╗║╔╝║╔╝...
    ........╔╗.║╚╗╚╝╚╝╔══╝╚╗.╚═╝╔╗╚═══╗║║║╚╗╚╝║║▇╔╝║║╚═╗║║║║╔╝║▇║╚╗╔╝╚═╗║║╚╝▇║║▇║║▇╚╝╔╝║║║║║║║║║╚╝╔╝╚╗╔╝║╔═══╝╚╝.║╔══╝║║║╔══╝╚╗╚╝║╔╝╚══╗.
    .......╔╝║.╚═╝╔══╗╚═══╗╚═╗╔═╝╚════╝╚╝║╔╝╔═╝╚╗╚╗║║╔╗║║║║║╚═╝╔╝╔╝║╔═╗║║╚══╗║║╔╝╚╗╔═╝╔╝║║╚╝║║║╚═╗╚╗╔╝║╔╝╚══╗╔╗╔╗║╚══╗║╚╝╚═══╗║╔╗╚╝╔═╗╔╝.
    .......╚╗║╔╗..╚═╗║╔╗╔╗╚╗╔╝╚═════╗╔╗╔╗╚╝╔╝╔╗╔╝╔╝║╚╝╚╝║║║║╔══╝╔╝╔╝║╔╝║║╔╗╔╝║║║╔╗║║╔╗╚╗║╚═╗║║╚╗╔╝▇║║╔╝║╔╗╔═╝║╚╝╚╝╔══╝║╔╗╔═══╝╚╝║╔╗╚╗║╚╗.
    ........║╚╝║.╔═╗║║║╚╝╚═╝╚╗╔════╗╚╝╚╝╚╗▇╚╗║║║▇╚╗╚═╗╔═╝║╚╝╚╗╔╗║▇╚╗║╚╗║║║╚╝▇╚╝║║║║║║╚╗║╚╗╔╝║║╔╝╚╗╔╝║╚═╝║╚╝╔╗╚╗╔══╝╔╗.║║║╚═════╗║║╚═╝╚═╝.
    ........╚═╗╚╗╚╗║║╚╝╔════╗║╚══╗╔╝╔═╗╔╗╚═╗║║║╚═╗║╔╗║║╔╗╚╗╔═╝║║╚═╗║║▇║║║╚╗╔═══╝║╚╝║║╔╝╚╗╚╝▇║║╚╗╔╝╚═╝▇╔═╝╔═╝╚═╝║╔╗╔╝╚═╝║╚════╗╔╝║╚═╗.....
    ........╔╗╚╗╚═╝╚╝╔╗║╔═══╝╚═╗╔╝╚═╝╔╝║║╔╗║╚╝║╔═╝║║║║║║╚╗║║╔═╝║╔═╝║║╔╝║╚═╝╚╗╔╗╔╝╔═╝║╚══╝╔══╝╚╗║║╔═══╗╚══╝╔═══╗╚╝║║╔═══╝.╔╗╔╗╚╝.╚══╝.....
    ........║║.╚════╗║║║╚══╗╔═╗║╚═══╗╚═╝╚╝╚╝╔╗║╚═╗╚╝║║║║╔╝║║║╔═╝╚═╗╚╝╚╗╚═╗▇╔╝║║║╔╝╔╗╚══╗▇╚═══╗║╚╝╚══╗╚╗▇╔╗╚══╗║╔╗╚╝╚═════╝╚╝╚═══╗.╔═╗....
    .....╔══╝║╔╗╔═══╝║╚╝╔══╝║╔╝╚╗╔══╝╔══════╝║╚═╗╚═╗║║║║║╔╝║║║╔╗╔╗╚╗▇╔╝╔╗╚╗╚╗║║║║╔╝╚╗╔═╝╔═╗▇╔╝╚═╗╔╗▇╚╗╚═╝╚═══╝║║║╔═╗╔╗╔╗╔═╗╔╗╔═╗║╔╝╔╝....
    .....╚╗╔╗╚╝╚╝╔╗╔═╝╔═╝╔══╝╚═╗║╚═══╝╔╗╔═╗╔╗╚╗▇║╔╗║╚╝║║║║╔╝║║║╚╝╚╗╚╗║╔╝╚╗╚╗║║║║║║▇╔╝╚╗▇║╔╝╔╝╔═╗║║╚══╝╔═══╗╔╗.║║╚╝.║║╚╝║╚╗╚╝╚╝.╚╝╚╗║.....
    ......╚╝╚═══╗║║║╔═╝╔╗╚╗╔═══╝╚══╗╔═╝╚╝▇╚╝║╔╝╔╝║║╚═╗║║║║╚╗║╚╝▇╔═╝╔╝║╚╗▇╚╗║║║╚╝║║╔╝╔╗╚═╝║▇╚╗╚╗║║╚══╗╔╝▇╔╗║║╚╗║╚══╗║╚═╗╚╗╚╗╔╗╔╗╔╗╔╝╚═╗...
    .......╔══╗.╚╝╚╝╚══╝╚═╝╚══════╗║╚╗╔╗╔══╗║╚╗╚╗║╚╗╔╝╚╝║║╔╝║╔╗╔╝╔╗╚╗║╔╝╔═╝║╚╝╔═╝║║╔╝║╔═╗╚╗▇╚═╝╚╝▇╔═╝║╔═╝╚╝║╔╝╚═══╝║╔═╝.╚╗╚╝╚╝║║║╚╗╔═╝...
    .......╚═╗╚═════╗.╔╗╔╗╔═══════╝╚═╝║║║╔═╝╚╗║╔╝╚╗║╚══╗║║╚═╝║╚╝╔╝╚╗║╚╝╔╝╔╗╚═╗╚═╗║║║╔╝╚╗╚╗╚══╗▇╔═╗╚═╗║╚════╝╚════╗.╚╝╔══╗║╔╗╔═╝║╚═╝║.....
    ......╔╗╔╝╔══╗╔╗╚═╝║║║╚═╗╔══╗╔══╗▇║╚╝║▇╔╗╚╝╚══╝║╔══╝╚╝╔══╝╔╗╚═╗╚╝▇╔╝╔╝╚══╝╔═╝║║║║╔╗╚╗║╔═╗╚╗╚╗║╔╗╚╝╔╗╔╗╔╗╔═╗╔╗╚═╗.║╔═╝║║║╚══╝╔═╗╚╗....
    .....╔╝╚╝╔╝╔═╝║╚╗╔╗╚╝╚═╗╚╝╔╗╚╝╔╗╚═╝╔╗╚═╝║╔═╗╔═╗╚╝╔═══╗╚╗╔╗║║╔╗╚╗╔╗╚╗╚═══╗▇║╔═╝╚╝╚╝║╔╝║╚╗║╔╝╔╝╚╝╚══╝╚╝╚╝╚╝╔╝║║╔═╝╔╝╚═╗╚╝╚═╗╔╗║.║╔╝....
    .....╚╗╔╗║╔╝╔╗║.╚╝╚═══╗╚══╝║╔═╝║╔╗╔╝╚═══╝╚╗║║╔╝╔╗╚╗╔═╝╔╝║║║╚╝╚╗╚╝║╔╝╔╗╔═╝╔╝║╔═════╝╚╗║╔╝║╚╗╚╗╔╗╔╗╔══╗╔══╗╚═╝╚╝╔╗║╔══╝╔══╗║║║╚╗║║.....
    ......╚╝║║╚═╝╚╝╔╗╔═══╗╚═══╗║╚═╗╚╝╚╝▇╔╗╔╗╔╗║╚╝╚╗║║╔╝╚═╗╚╗║║╚╗▇╔╝╔╗║╚╗║║╚═╗╚╗║╚╗╔╗╔╗╔═╝╚╝▇╚╗╚╗╚╝╚╝╚╝╔╗╚╝╔═╝╔╗╔╗╔╝╚╝╚╗╔╗║╔═╝║║║╔╝╚╝.....
    ........╚╝.╔╗╔═╝║╚══╗║╔╗╔╗║║╔╗╚═════╝╚╝╚╝╚╝╔═╗╚╝╚╝╔╗╔╝╔╝║╚═╝╔╝╔╝║╚╗║║╚╗╔╝╔╝║╔╝║╚╝║╚═════╗╚╗║╔═════╝╚══╝.╔╝╚╝╚╝╔═══╝║║║╚═╗╚╝╚╝........
    ........╔═╗║║╚═╗║╔╗╔╝╚╝╚╝╚╝╚╝║╔╗╔╗╔╗╔╗╔╗╔══╝▇╚╗╔╗╔╝║║▇╚═╝╔══╝╔╝╔╝╔╝║║╔╝╚╗║╔╝╚═╝╔═╝╔╗╔╗╔╗╚╗║║║╔═════════╗╚╗╔══╗╚════╝╚╝╔╗╚══╗╔╗.......
    ........╚╗╚╝╚══╝╚╝║╚════════╗╚╝╚╝╚╝╚╝╚╝║╚═╗╔═╗║║║║▇╚╝╔══╗║╔═╗║╔╝╔╝╔╝║║╔╗║║║╔╗╔╗╚╗╔╝║║╚╝╚╗║║║╚╝╔════════╝╔╝╚╗.║╔╗╔═╗╔═╗║║╔═╗╚╝╚═╗.....
    .........╚╗╔╗╔═╗╔╗╚═════════╝╔═════╗╔═╗╚╗╔╝║╔╝╚╝║╚═══╝╔═╝║║╔╝║║╔╝▇║╔╝║║║║╚╝║║║║╔╝╚╗║╚══╗║║║║╔╗╚═════════╝╔╗╚╗║║║╚╗║║╔╝║║╚╗║╔═══╝.....
    ..........║║║║.╚╝╚═╗╔═╗╔═╗╔╗╔╝╔╗╔══╝║╔╝▇╚╝╔╝╚╗╔╗║╔╗╔═╗║╔╗╚╝║╔╝║╚═╗║║▇╚╝║║╔═╝╚╝╚╝╔╗║║╔═╗║║║╚╝║╚╗╔═══════╗╔╝╚═╝╚╝╚═╝║║╚╗║╚═╝║╚═══╗.....
    ..........╚╝╚╝.╔╗.╔╝╚╗╚╝.╚╝╚╝╔╝╚╝╔╗▇║║╔═══╝╔╗╚╝║║║╚╝╔╝╚╝╚═╗║║▇║╔═╝╚╝▇▇╔╝║╚╗╔═╗╔╗║║║║╚╗║║╚╝╔╗╚╗║╚══════╗║╚═════╗╔╗╔╝║╔╝╚╗╔╗╚═══╗║.....
    ...........╔╗╔═╝╚═╝╔═╝╔══╗╔╗.╚═══╝╚═╝╚╝╔═╗╔╝║╔╗║║╚═╗╚╗╔═╗╔╝║║╔╝║▇▇▇▇▇▇╚═╝▇║║╔╝║║║╚╝╚╗║╚╝╔═╝╚═╝╚╗▇╔╗▇╔╗║║╔═╗╔═╗╚╝║║╔╝║╔╗╚╝╚═══╗║║.....
    ..........╔╝║╚══╗╔╗║╔╗╚═╗╚╝╚═══════════╝▇╚╝▇║║║║║╔╗╚╗║║╔╝╚╗╚╝╚╗╚═╗▇▇▇▇▇▇▇╔╝║╚╗║║║╔╗╔╝╚╗▇╚═════╗║╔╝╚╗║╚╝╚╝╔╝╚╗║╔═╝╚╝.║║║╔╗╔═══╝╚╝.....
    ..........╚╗╚═══╝║╚╝║╚╗.╚╗╔╗╔╗╔════════╗╔══╗║║╚╝╚╝╚╗║║║╚╗╔╝▇▇▇║╔╗║▇▇▇▇▇▇▇╚═╝▇║║╚╝║║║╔╗║╔══╗╔╗╔╝╚╝╔╗╚╝╔╗╔╗╚╗╔╝║╚════╗║║║║║╚═══╗.......
    .........╔╗╚═════╝.╔╝╔╝╔╗╚╝║║║║╔═╗╔══╗╔╝║╔═╝║╚════╗║║╚╝╔╝║▇▇▇▇║║╚╝▇▇▇▇▇▇▇▇╔══╝╚╗╔╝╚╝║╚╝╚═╗║║║╚══╗║╚═╗║╚╝╚╗╚╝.╚═╗╔══╝╚╝║║║╔═╗╔╝.......
    .........║╚═══╗.╔═╗╚╗╚═╝╚══╝║╚╝╚╗╚╝╔╗╚╝╔╝╚═╗╚═╗╔╗╔╝║╚╗▇╚═╝▇▇▇▇╚╝▇▇▇▇▇▇▇▇▇▇╚═╗╔═╝╚═══╝╔═══╝╚╝╚═╗▇╚╝╔╗╚╝╔╗╔╝╔╗╔╗.╚╝╔═╗╔╗╚╝║╚╗╚╝╔╗......
    .........╚═══╗╚╗╚╗╚╗╚═══╗╔╗╔╝.╔╗╚══╝╚╗╔╝╔═╗╚═╗╚╝╚╝▇╚═╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚╝╔╗╔══╗▇╚══╗╔═╗╔╗╚═══╝╚══╝╚╝╔╝╚╝║╔╗.╚╗║║╚═╗╚╗╚══╝╚═╗....
    ........╔╗╔═╗╚╗║╔╝╔╝.╔╗.╚╝╚╝╔╗║║╔═══╗╚╝╔╝▇╚══╝╔╗╔╗╔╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔╝╚╝╔╗╚╗▇╔╗║║╔╝║╚════╗╔╗╔══╗║╔═╗╚╝╚══╝╚╝╔╗║╔╝╔═╗╔═╗║....
    .......╔╝║╚╗║.║║╚╗╚╗╔╝╚╗.╔══╝╚╝╚╝╔╗▇╚╗╔╝▇╔════╝╚╝╚╝╚╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚══╗║╚╗╚╗║║╚╝╚═╝╔════╝║╚╝╔═╝║║.╚══╗╔══╗╔╝╚╝╚╗╚╗╚╝.╚╝....
    .......╚╗║╔╝╚═╝╚╗║╔╝╚═╗╚═╝╔╗╔════╝╚═╗║╚══╝╔═╗╔═╗╔═══╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔╝║▇╚╗║║╚═╗▇╔╗╚═══╗╔╝╔═╝╔╗║╚═╗╔╗╚╝..╚╝..╔╗║╔╝.........
    ...╔═╗╔═╝║╚══╗╔╗╚╝╚═══╝╔══╝╚╝╔════╗╔╝║╔══╗╚╗║╚╗╚╝╔═╗╔╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚╗║╔═╝╚╝╔═╝╔╝╚╗▇╔╗╚╝▇╚══╝║║╔═╝║║.╔╗╔╗╔╗.║║╚╝.╔╗.......
    ...╚╗║╚═╗╚╗╔╗╚╝╚═╗╔═╗╔╗║╔═══╗╚═══╗╚╝▇╚╝╔╗╚═╝╚═╝╔═╝╔╝║║▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚╝╚═╗╔╗╚══╝╔╗╚═╝╚══╗╔═══╝║╚══╝║╔╝╚╝╚╝╚╗║╚╗╔═╝╚══╗....
    .╔══╝╚═╗╚╗║║║.╔═╗╚╝.╚╝╚╝╚══╗╚════╝▇╔══╗║╚══╗▇╔╗╚╗╔╝╔╝╚═╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔═╗╔╗╚╝╚═══╗║╚═════╗║╚════╝╔╗╔═╝║╔═╗╔╗╔╝║╔╝╚╗╔═══╝....
    .╚╗╔╗╔╗╚═╝╚╝╚╗╚╗╚═╗╔═╗╔╗╔╗╔╝╔╗╔════╝╔═╝║╔══╝╔╝║╔╝╚═╝╔══╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔╗▇▇▇╚╗╚╝╚══════╝║╔═════╝║╔╗╔═══╝║╚══╝╚╗╚╝╚╝.║╚═╗║║╔═══╗...
    ..╚╝╚╝╚═╗╔╗╔╗╚═╝╔╗╚╝╔╝║║║║╚═╝║║.╔══╗╚═╗║╚╗╔╗╚╗╚╝╔╗╔╗╚══╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇║║▇╔╗▇║╔══════╗╔═╝╚═════╗╚╝╚╝.╔╗.╚════╗╚╗╔╗╔╗║╔═╝║╚╝╔══╝...
    .....╔╗╔╝║╚╝╚╗╔╗║║╔╗╚═╝╚╝╚╗╔═╝║╔╝╔╗╚══╝║╔╝║║╔╝╔═╝╚╝╚═╗╔╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇║╚═╝╚╗╚╝▇╔═══╗║║╔═══╗╔═╗╚╗╔══╗║╚╗.╔╗╔╗╚╗╚╝║║║║╚═╗║╔╗╚╗.....
    ....╔╝╚╝╔╝╔╗╔╝║╚╝╚╝╚══╗╔═╗╚╝╔╗║╚═╝╚════╝╚╗║║╚╗╚═════╗║╚╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚═══╗║▇╔╗╚══╗╚╝║╚══╗║╚╗║╔╝║╔═╝║╔╝╔╝╚╝╚╗╚══╝║║║╔═╝║║╚═╝.....
    ....╚╗╔╗║╔╝╚╝╔╝╔══════╝║.╚╗╔╝╚╝.╔╗╔══════╝║║╔╝╔╗╔╗╔═╝╚═╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔══╝╚╗║╚═╗╔╝╔═╝╔══╝╚═╝╚╝╔╝╚══╝╚═╝╔╗╔╗╚═══╗║║║╚══╝╚╗.......
    ....╔╝║║║╚╗╔╗╚╗╚═══════╝╔╗╚╝╔═══╝╚╝▇╔╗╔╗▇╔╝╚╝╔╝║║║╚═╗▇╔═══╗▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╚═══╗║╚╗╔╝╚═╝╔╗╚══╗╔═╗╔═╝▇╔══╗╔══╝╚╝║╔╗╔╗╚╝╚╝╔╗╔══╝╔═╗....
    ....╚╗║╚╝.╚╝╚═╝╔════════╝╚═╗╚═══════╝╚╝╚═╝╔╗╔╝╔╝║╚══╝╔╝╔══╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔══╗║╚═╝╚════╝╚═══╝║╔╝║╔═╗╚═╗║╚═╗╔╗.╚╝║║║╔═══╝║╚═══╝╔╝....
    .....║╚╗╔╗╔═╗╔╗╚╗╔═╗╔╗╔═╗╔═╝╔════╗╔════╗╔╗║╚╝▇╚╗╚═╗▇╔╝╔╝▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇╔═╝╔╗╚╝╔╗╔╗╔╗╔═════╗╔╝╚╗║╚╗╚══╝╚═╗╚╝╚══╗╚╝╚╝╔══╗║╔═╗╔═╝.....
    .....╚═╝║║╚╗║║╚╗╚╝.╚╝╚╝╔╝║╔╗╚═══╗║╚══╗▇╚╝║╚══╗╔╝╔╗╚═╝╔╝▇▇╔╗▇▇▇▇▇╔═╗▇▇▇▇╔╗╚══╝╚╗╔╝╚╝╚╝╚╝╔═══╗╚╝╔═╝║▇╚═════╗╚╗╔╗╔╗╚════╝╔═╝║╚╗╚╝.......
    ......╔═╝╚═╝║╚╗║.╔╗.╔╗.╚╗║║║╔═══╝╚══╗╚══╗╚╗╔═╝╚╗║║╔╗╔╝╔╗╔╝╚═╗▇▇▇╚╗╚╗▇▇╔╝║▇▇╔╗▇║║╔══╗╔══╝╔╗╔╝╔╗╚══╝╔══════╝.╚╝╚╝╚════╗╔╝╔╗╚═╝.........
    ...╔═╗╚════╗╚═╝╚═╝╚═╝╚══╝╚╝║║╔════╗▇╚═══╝▇║╚══╗╚╝║║╚╝▇║║║╔══╝▇▇╔╗║╔╝▇▇╚╗╚╗╔╝╚╗║║╚═╗║╚═══╝║╚═╝║▇╔╗▇╚════════╗╔═════╗.╚╝╔╝╚═╗..........
    ...╚╗║.╔╗╔═╝╔═══════════╗╔╗║╚╝╔╗╔╗╚═════╗╔╝╔═╗╚═╗║║╔══╝║║╚═╗▇▇╔╝║║╚╗▇╔╗║╔╝╚╗╔╝╚╝╔╗║║╔╗▇╔╗╚══╗╚═╝║╔╗╔═══╗╔══╝╚╗╔═══╝╔╗.║╔═╗╚╗.........
    ...╔╝╚═╝╚╝╔╗║╔══════╗╔╗.╚╝║║.╔╝╚╝╚══╗╔═╗║╚╗╚╗╚═╗║╚╝╚╗╔═╝║╔═╝▇▇╚╗║║╔╝╔╝╚╝╚╗▇║╚═╗╔╝╚╝║║╚╗║╚═══╝╔═╗║║║╚══╗╚╝╔╗╔╗║║╔══╗║║╔╝╚╗╚═╝.........
    ...╚══╗╔═╗║║║╚═╗╔╗╔╗╚╝╚═══╝╚╗║╔════╗║╚╗╚╝▇╚╗╚╗▇╚╝╔══╝║╔╗║╚══╗╔═╝╚╝║╔╝╔═══╝╔╝╔═╝╚╗╔╗╚╝╔╝║╔═══╗║╔╝╚╝╚═══╝╔╗║╚╝╚╝║║╔═╝║╚╝╔═╝............
    ....╔═╝╚╗╚╝╚╝╔╗║║╚╝╚═╗╔╗╔══╗║╚╝.╔╗╔╝╚═╝╔══╗╚═╝╔═╗╚══╗╚╝║║╔╗╔╝╚═══╗║╚╗╚╗╔╗▇╚╗╚══╗╚╝╚═╗╚╗╚╝╔╗▇╚╝╚═╗╔╗╔╗╔═╝╚╝╔══╗╚╝╚╗╔╝╔╗╚═╗............
    ..╔╗║╔══╝╔═══╝╚╝║╔══╗╚╝╚╝╔═╝╚╗╔═╝╚╝▇╔╗▇║╔═╝╔╗▇║╔╝▇╔╗║╔═╝║║╚╝▇╔═╗╔╝╚╗╚╗╚╝╚╗╔╝╔══╝╔╗╔╗║╔╝▇╔╝╚═╗╔══╝║╚╝╚╝╔╗╔╗╚╗.╚══╗╚╝╔╝╚╗╔╝............
    ..║╚╝║╔══╝╔═╗╔═╗║╚═╗║.╔╗.╚══╗║╚════╗║╚╗║║╔╗║║╔╝╚╗╔╝║║╚═╗║╚═╗▇╚╗║╚═╗║▇╚═╗╔╝║╔╝▇╔╗║╚╝║║║╔╗╚╗╔═╝╚══╗║╔═══╝╚╝╚╗╚═══╗╚╗╔╝╔╗╚╝╔╗.╔╗........
    ╔═╝╔╗║╚═══╝.║║.╚╝.╔╝╚═╝╚════╝╚═════╝║╔╝║╚╝╚╝╚╝╔═╝╚╗║║╔═╝║╔═╝▇╔╝║╔═╝║╔╗╔╝╚═╝╚═╗║║╚═╗║║╚╝╚═╝╚╗╔╗╔╗╚╝╚══════╗╚╗╔══╝.╚╝.║╚══╝╚╗║╚═╗......
    ║╔╗║║╚╗.╔═══╝╚╗.╔═╝╔╗╔╗╔╗╔══╗╔══╗╔══╝╚╗║╔╗╔═╗╔╝╔═╗║╚╝║╔╗║║╔╗╔╝╔╝╚╗╔╝║║╚╗╔╗╔═╗║║╚═╗║║╚╗╔╗╔═╗╚╝╚╝╚╗╔╗╔╗╔═╗╔╝╔╝╚═══════╝╔═╗╔╗║║╔═╝......
    ║║╚╝╚╗║.╚╗╔═╗╔╝╔╝╔╗║║║╚╝║║╔═╝╚═╗╚╝╔╗╔╗╚╝║╚╝▇╚╝▇╚╗║╚╗╔╝║║║║║║║╔╝╔═╝╚╗║╚╗╚╝║╚╗╚╝╚═╗╚╝╚╗║║║║╔╝╔═╗╔╗╚╝║║║╚╗║╚╗╚═╗╔═╗╔════╝.║║║╚╝╚╗.......
    ╚╝...║║..║║╔╝║.╚═╝╚╝║║╔╗╚╝╚╗╔══╝╔═╝╚╝╚╗╔╝▇╔╗▇╔╗╔╝╚═╝╚╗║║║║║║║╚╗╚══╗║║╔╝╔═╝╔╝▇╔╗▇║╔╗╔╝║║╚╝╚╗║▇║║║╔╗╚╝╚═╝╚═╝╔╗║║╔╝╚═══╗╔╗║║║╔══╝...╔╗..
    .....╚╝..╚╝║╔╝╔══╗╔═╝╚╝║╔╗╔╝║╔══╝╔╗╔═╗║╚══╝╚╗║║╚╗╔══╗╚╝║║║║║╚╗╚══╗║║║╚╗╚╗╔╝╔╗║╚╗╚╝║╚╗╚╝╔══╝║╔╝║║║╚═╗╔═════╝║║║║╔╗╔══╝║║╚╝╚╝╔╗.╔╗╔╝║..
    ...........╚╝╔╝╔╗╚╝╔══╗║║╚╝╔╝╚═══╝╚╝╔╝║╔╗╔═╗╚╝║▇╚╝▇╔╝╔═╝║║║║▇╚╗╔═╝║║╚╗║╔╝║▇║║╚╗║╔╗║╔╝╔╗╚╗╔╗║╚═╝║║╔═╝╚╗╔════╝╚╝╚╝║╚═══╝╚════╝╚╗║║║╔╝..
    .............╚═╝╚═╗║╔═╝║╚══╝╔╗.╔═╗╔╗║╔╝║╚╝▇║╔═╝╔╗▇╔╝╔╝╔╗║╚╝║╔═╝╚═╗║╚╗║║╚╗╚═╝╚╗║║║║║║╔╝╚╗╚╝╚╝╔╗▇╚╝╚═══╝╚═╗.╔══╗╔╗╚═════╗╔╗╔╗╔═╝║║║║╔╗.
    ..........╔╗╔═════╝║╚══╝.╔╗╔╝╚╗╚╗╚╝╚╝╚╗╚══╗╚╝╔╗║║╔╝╔╝▇║║║╔═╝╚╗╔══╝╚╗║║╚╗╚╗╔══╝║╚╝╚╝╚╝╔═╝╔╗╔╗║╚═════════╗╚═╝╔═╝║║╔╗╔╗╔╗╚╝╚╝╚╝.╔╝╚╝╚╝╚╗
    .......╔═╗║║╚══════╝.╔═══╝╚╝╔╗╚═╝╔╗╔═╗╚═══╝╔═╝╚╝╚╝╔╝╔╗║║║╚╗╔═╝╚╗▇╔╗║║╚╗╚═╝║▇╔╗║╔╗╔═╗╔╝╔╗║╚╝║║╔═╗╔═╗╔══╗║╔═╗╚╗╔╝║║╚╝╚╝╚═══╗.╔╗╚╗╔══╗╔╝
    .......╚╗╚╝║╔╗╔═╗╔══╗║╔═════╝╚═══╝╚╝╔╝╔╗╔╗▇╚═╗╔══╗╚╗║║║║║╔╝╚╗╔╗╚╗║╚╝╚╗╚╗╔╗╚═╝║║║║║╔╝╚╗║║╚╗╔╝╚╝╔╝║╔╝╚╗╔╝╚╝.╚═╝║╔╝║╔═══════╝╔╝╚═╝╚╗.║║.
    ........╚═╗║║║╚╗║╚═╗║╚╝╔╗╔══════════╝╔╝║║╚═╗▇╚╝╔╗╚╗╚╝╚╝╚╝║╔╗╚╝╚╗║║╔══╝▇╚╝╚╗╔═╝╚╝╚╝╚╗╔╝║╚╗║╚══╗║╔╝╚╗╔╝╚═══╗╔╗.║╚═╝╚═╗╔════╗║╔════╝.║╚╗
    ........╔═╝╚╝╚╗║╚══╝╚╗╔╝║╚═══════════╝╔╝║╔═╝╔═╗║║▇║╔════╗║║║╔╗▇║║║║▇╔╗╔╗╔═╝║╔╗╔╗▇╔╗║╚╗╚╗║║╔══╝╚╝╔╗╚╝╔╗╔══╝║╚═╝╔╗╔╗╔╝║╔═══╝║╚╗╔═╗╔╗╚═╝
    ........╚════╗║╚════╗║╚╗╚═══╗.╔══════╗╚╗║║╔╗╚╗╚╝║╔╝╚╗▇╔╗╚╝║║║╚═╝╚╝╚╗║║║║╚═╗║║║║╚╗║╚╝╔╝╔╝╚╝╚╗▇╔╗╔╝║╔═╝╚╝.╔╗╚╗╔═╝╚╝╚╝.║║╔╗╔╗║╔╝║╔╝║║...
    ........╔╗╔══╝╚═╗╔══╝╚═╝╔══╗╚╗╚═╗╔══╗║╔╝║║║╚╗╚═╗║╚╗╔╝╔╝║╔╗║║╚═══╗╔═╝║╚╝║╔═╝╚╝║╚╗║╚═╗║╔╝╔═══╝╔╝║║╔╝╚═════╝╚═╝╚═══════╝╚╝╚╝╚╝╚╗║║╔╝╚══╗
    ......╔╗║║╚════╗║╚══════╝╔╗╚╗╚═╗╚╝╔═╝╚╝╔╝╚╝╔╝▇╔╝╚═╝╚═╝╔╝║║║╚═╗╔═╝║╔═╝╔═╝╚══╗╔╝╔╝║▇╔╝║║╔╝╔══╗╚╗║║║╔═══════════╗╔═╗╔╗╔╗╔═╗╔╗╔╗╚╝╚╝╔═╗╔╝
    .....╔╝╚╝╚═════╝╚════════╝╚═╝╔╗╚═╗╚═╗╔╗╚═╗╔╝╔╗╚══╗╔═══╝╔╝║╚═╗║╚═╗║╚╗╔╝▇╔╗╔╗║║▇╚╗║╔╝╔╝║╚╗║╔═╝╔╝║║║╚══╗╔══════╗║║.╚╝║║╚╝.║║║║║╔╗╔═╝.╚╝.
    .....╚═══╗╔╗╔╗╔═╗╔╗╔╗╔═╗╔═╗╔═╝╚═╗╚══╝║║╔╗║║╔╝╚╗╔╗║╚╗╔═╗╚╗╚═╗║╚╗╔╝║╔╝║╔╗║╚╝║║║╔╗║║╚╗╚╗║╔╝║║╔╗╚╗╚╝╚╗╔╗╚╝╔═╗╔══╝╚╝╔═╗║╚══╗╚╝║║╚╝╚╝╔═╗...
    ......╔═╗╚╝╚╝╚╝╔╝║║║╚╝╔╝║.╚╝╔╗.╔╝╔╗╔╗║║║║║║╚╗╔╝║║║╔╝║╔╝▇╚═╗║║╔╝╚╗║║╔╝║║╚═╗║║║║║║║▇╚╗║║║▇║║║║▇║╔══╝║║╔╗╚╗║╚═════╝╔╝╚╗╔╗╚═╗║╚════╝╔╝...
    .╔╗╔══╝╔╝.╔═══╗╚╗║║║╔╗╚═╝╔╗╔╝╚═╝╔╝╚╝║║╚╝╚╝╚╗║║╔╝║║║╔╝║╔╗╔╗║║║╚╗╔╝║║║╔╝╚╗╔╝║║╚╝║║║╔╗║║║║╔╝║║║╔╝╚╗╔╗║╚╝║╔╝╚═╗╔╗╔══╝╔╗╚╝║╔═╝╚╗╔╗╔═╗╚╗...
    .║╚╝╔═╗║╔╗╚══╗║.╚╝╚╝║╚╗╔╗║╚╝╔═══╝.╔═╝╚═╗.╔╗║║║║.║║║║╔╝║║║║║║╚╗║║.║║╚╝╔═╝║.╚╝╔═╝║║║║║║║║║.║║║║╔═╝║╚╝╔═╝╚══╗║║║╚═══╝╚═╗║╚══╗║║║╚╗║╔╝...
    .╚╗╔╝╔╝╚╝╚╗╔╗║║╔══╗╔╝╔╝║╚╝╔╗║╔════╝╔╗╔╗╚╗║║╚╝║╚╗║║║║║╔╝║║║║╚╗║║║╔╝╚═╗║╔╗╚══╗╚═╗║║║║║║║║╚╗║║║║╚═╗╚═╗╚═╗╔╗╔╝╚╝╚╗╔╗╔╗╔═╝╚═══╝╚╝╚═╝╚╝....
    ..╚╝.╚══╗╔╝║║║║╚╗╔╝╚╗╚╗╚══╝║║║╔═══╗║║║║╔╝║╚══╝╔╝╚╝╚╝║╚╗║║║╚╗║║║║╚╗╔╗║║║╚╗╔╗╚╗╔╝║╚╝║║╚╝║╔╝║║╚╝╔═╝╔═╝.╔╝║║╚╗╔╗.║║╚╝║╚═══╗.╔════╗.......
    ...╔══╗╔╝║╔╝║║╚╗║╚═╗║╔╝╔═══╝║║╚═╗╔╝║╚╝║║.║╔╗╔╗╚══╗.╔╝╔╝║║╚╗║║║║╚╗║║║║║╚╗╚╝║╔╝╚╗╚╗╔╝╚╗╔╝║╔╝╚═╗╚═╗╚╗.╔╝╔╝╚╗╚╝╚╗║╚╗.╚═╗╔╗╚═╝╔╗╔═╝.......
    ...╚═╗╚╝╔╝╚╗╚╝╔╝╚═╗║║╚═╝╔╗╔═╝║╔╗║╚╗╚═╗╚╝╔╝║║║║╔══╝╔╝╔╝╔╝║╔╝║╚╝║╔╝╚╝║║║╔╝╔═╝║╔═╝╔╝║╔╗║╚╗║╚╗╔═╝╔═╝╔╝╔╝╔╝╔═╝╔══╝╚╗╚╗╔╗╚╝║╔╗╔╝║╚══╗......
    .....╚═╗║╔╗S╗╔╝..╔╝╚╝╔═╗║║║╔═╝║║╚╗╚═╗╚╗╔╝╔╝║║║╚═╗╔╝╔╝╔╝╔╝║╔╝╔═╝║╔╗╔╝║║╚╗╚╗╔╝║╔╗║.╚╝║╚╗╚╝.║╚╗╔╝╔╗╚╗║╔╝.║╔╗╚═══╗╚╗╚╝╚═╗╚╝╚╝.║╔══╝......
    ....╔══╝╚╝╚═╝║╔╗╔╝╔═╗╚╗║║║║╚╗╔╝╚╗║╔═╝╔╝╚═╝.╚╝╚╗╔╝║╔╝.║╔╝╔╝╚╗║╔╗╚╝║╚╗║║╔╝.║║╔╝║║║╔╗.║╔╝╔══╝╔╝╚╗║║╔╝║╚═╗╚╝╚═╗╔═╝╔╝╔╗╔╗╚═══╗.╚╝.........
    ....║╔╗╔╗╔╗╔╗╚╝╚╝╔╝.║╔╝╚╝║║╔╝║╔╗╚╝║╔╗╚═════╗.╔╝║╔╝║╔═╝║.╚╗╔╝╚╝║╔╗╚╗║║║╚═╗╚╝║╔╝║╚╝╚╗╚╝.╚══╗╚═╗║║║╚╗║╔╗╚═══╗║╚═╗╚═╝║║╚╗╔══╝╔╗.╔╗.......
    ....╚╝╚╝║║║║╚╗╔═╗╚╗╔╝╚══╗╚╝╚╗╚╝╚═╗╚╝╚╗╔═╗╔╗║╔╝╔╝║╔╝║╔╗║╔═╝╚═╗╔╝║║╔╝║║╚╗╔╝╔╗║╚╗╚╗╔╗╚══╗╔══╝╔═╝║║║╔╝║║╚╗╔═╗║║╔═╝╔═╗╚╝╔╝╚═══╝╚═╝╚═╗.....
    ......╔═╝║╚╝.║╚╗╚╗║╚╗╔═╗║╔══╝╔╗╔╗║╔══╝║.║║║║╚╗╚╗║╚╗║║╚╝╚╗╔═╗║╚═╝║║.║║╔╝║.║╚╝╔╝╔╝║╚╗╔╗║╚╗╔╗║.╔╝║╚╝.║║╔╝║.╚╝║║╔╗║╔╝╔╗╚╗╔╗╔══╗╔╗╔═╝.....
    ......║╔╗╚╗╔╗║╔╝╔╝╚╗║╚╗╚╝╚══╗║╚╝║║╚╗╔╗╚╗║║║╚╗╚╗║║╔╝║║╔═╗║║.╚╝╔══╝║╔╝║╚╗║╔╝╔╗║.╚╗╚╗║║║║.║║║╚╗╚╗╚══╗║║╚╗║╔══╝╚╝╚╝╚═╝║.╚╝╚╝..║║╚╝.......
    .....╔╝║╚╗║║╚╝╚╗╚╗╔╝║╔╝╔═╗╔╗║╚╗╔╝║.╚╝║╔╝╚╝║╔╝╔╝║║╚╗║║╚╗╚╝╚══╗╚══╗║╚═╝.╚╝╚╗║║╚╗╔╝╔╝║║╚╝╔╝║╚╗╚╗╚╗╔╗║╚╝.║║╚╗╔╗╔═╗╔╗╔╗╚═════╗.╚╝.........
    .╔╗.╔╝╔╝.║║╚╗╔═╝╔╝╚╗║╚╗╚╗╚╝╚╝╔╝╚╗║╔══╝╚══╗╚╝╔╝╔╝╚╗║║║╔╝╔═╗╔╗╚╗.╔╝╚═╗╔════╝║╚╗║╚╗║╔╝╚═╗╚╗║╔╝╔╝╔╝║╚╝.╔═╝║╔╝║║╚╗║║╚╝║╔╗╔═══╝............
    .║╚═╝╔╝..╚╝.╚╝╔═╝╔═╝║╔╝.╚╗╔╗╔╝╔╗║║║╔═╗╔══╝╔═╝╔╝..╚╝╚╝╚═╝╔╝║║╔╝╔╝╔╗╔╝╚═══╗╔╝.║╚╗╚╝╚╗╔═╝╔╝║╚╗╚╗╚╗║╔══╝╔╗║╚╗║╚╗║║╚═╗║║║╚═══╗............
    .╚═╗╔╝...╔╗╔═╗║╔╗║╔═╝║╔══╝║║║.║║║║║║╔╝╚══╗║╔╗║╔╗╔═══════╝╔╝╚╝.╚╗║║╚══╗╔═╝╚╗╔╝╔╝╔══╝╚═╗║╔╝╔╝╔╝╔╝║║╔═╗║║╚╗║╚╗║║║╔╗║║║║╔╗╔╗╚╗...........
    ...║║....║║╚╗╚╝║║║╚══╝╚╗╔╗║║╚═╝║║║║║╚╗╔╗╔╝╚╝║╚╝║╚═╗╔╗╔╗╔╗║.╔═══╝║╚╗╔═╝╚═╗╔╝║╔╝.╚══╗╔═╝╚╝.╚╗╚╗╚╗║╚╝.╚╝║╔╝║╔╝║║╚╝║║║║║║╚╝╚═╝...........
    ...╚╝...╔╝╚═╝╔═╝║║╔═╗╔═╝║║║║╔╗╔╝║║║║╔╝║║╚═╗.║╔╗╚═╗╚╝╚╝║║║╚╗╚╗╔═╗╚╗║║.╔╗.║╚╗║╚╗╔═══╝╚═════╗╚╗╚╗║╚══╗.╔╝╚╗║║╔╝╚╗.║║╚╝║╚════╗...........
    ........╚╗╔╗╔╝╔═╝╚╝╔╝╚═╗║╚╝║║╚╝╔╝║╚╝╚╗║║╔╗╚╗╚╝║╔═╝╔═══╝║║╔╝╔╝╚╗╚═╝║╚═╝╚╗╚╗║║╔╝╚═══╗╔╗╔╗╔╗╚╗╚╗║╚╗╔═╝╔╝╔╗║╚╝╚═╗║.║║╔═╝╔╗╔═╗╚╗..........
    .........╚╝╚╝.╚╗╔═╗╚╗..╚╝.╔╝║╔═╝╔╝╔══╝║║║╚╗╚═╗║╚═╗╚═══╗║║╚╗╚╗╔╝╔══╝╔═╗╔╝.║║║╚╗╔╗╔╗║║╚╝╚╝╚═╝.╚╝.║╚╗╔╝╔╝║╚═╗╔═╝╚╗╚╝╚╗╔╝╚╝.║╔╝..........
    .............╔═╝╚╗║╔╝.....╚╗║║╔╗╚╗║╔╗╔╝╚╝.╚╗╔╝║╔╗║╔═══╝║║╔╝.║║.╚╗╔╗║.║╚╗╔╝║║╔╝║╚╝╚╝╚═════╗╔════╝╔╝╚╗║╔╝╔═╝║╔╗╔╝...╚╝....╚╝...........
    .............╚═╗╔╝╚╝.......╚╝║║║╔╝║║║║...╔═╝╚╗║║╚╝╚╗╔╗╔╝║╚═╗║║╔═╝║║╚╗║╔╝║╔╝║║.╚══╗╔╗╔═╗╔═╝║╔═══╗║╔╗╚╝╚╗╚═╗║║║╚╗╔╗....................
    ..............╔╝║............╚╝║║.╚╝║╚╗..╚═╗╔╝║╚╗..╚╝║╚╗║╔═╝╚╝║╔╗║╚╗║║╚╗║║╔╝╚══╗╔╝║║║╔╝╚╗.╚╝╔══╝╚╝╚╗.╔╝╔═╝╚╝╚╗╚╝║....................
    ..............╚╗║..............╚╝...╚═╝..╔═╝╚╗╚═╝.╔══╝╔╝║╚═══╗╚╝║║╔╝║║╔╝║║║╔╗╔╗║╚═╝║║║╔╗╚══╗║╔═╗╔═╗╚╗╚╗╚═╗...╚═╗╚╗...................
    ...............╚╝........................╚╗╔╗║....╚══╗║╔╝╔═╗╔╝.╔╝║╚╗║║║╔╝║║║║║║╚══╗║║╚╝║╔╗╔╝╚╝.║╚╗║╔╝╔╝╔╗║.....║╔╝...................
    ..........................................╚╝╚╝.......╚╝║╔╝.╚╝..╚╗║╔╝║║║║╔╝╚╝║║║╔╗╔╝║║.╔╝║╚╝.╔══╝╔╝╚╝.╚╗║╚╝.....╚╝....................
    ......................................................╔╝╚╗......╚╝╚╗║╚╝║╚══╗╚╝╚╝║╚╗╚╝.╚╗╚╗..╚══╗║.╔╗╔═╝╚═══╗.........................
    ......................................................║╔╗║.........║║.╔╝╔╗╔╝....║╔╝....╚╗║.....║╚═╝║║╔╗╔══╗╚╗........................
    ......................................................╚╝╚╝.........╚╝.╚╗║║║.....╚╝......╚╝.....║╔═╗║╚╝║╚╗.╚═╝........................
    .......................................................................╚╝║║...................╔╝╚╗╚╝..║╔╝............................
    .........................................................................╚╝...................╚═╗║....╚╝.............................
    ..............................................................................................╔═╝╚╗..................................
    ..............................................................................................╚═══╝..................................
    
  • # j'ai adoré

    Posté par  . En réponse au message Advent of Code 2023 : Jour 10. Évalué à 2.

    Le labyrinthe de tuyaux change des labyrinthe classique.

    Cela m'a pris un peu (trop) de temps d'encoder les déplacements. Mais au final, ça se fait.

    Par contre la partie 2, je ne vois pas du tout comment procéder.

  • [^] # Re: Résolution péripatéticienne...

    Posté par  . En réponse au message Advent of Code 2023 : Day 9. Évalué à 2.

    Chapeau pour avoir fait le challenge depuis le phone. Moi qui passe par le PC pour un message de plus de trois lignes, j'aurai souffer.