• [^] # Re: Solution en Haskell.

    Posté par . En réponse au message Advent of Code, jour 19. Évalué à 1. Dernière modification le 19 décembre 2023 à 13:51.

    Je maintiens une liste de pavés.

    J'ai une fonction go qui prend comme paramètre une liste de pavés et une liste de tests.
    Elle va me renvoyer la liste des pavés qu'il y aura au final.

    La fonction go fonctionne ainsi:
    Je regarde le prochain test à faire.
    Selon le résultat du test, je découpe ma liste de pavés en deux listes: les réussis et les échoués (en ayant éventuellement divisé des pavés).

    Pour les réussis, je regarde l'instruction à faire quand le test est réussi et je stocke le résultat suivant dans une variable réussis2
    - si l'instruction est "accepter": la liste des réussis.
    - si l'instruction est "refuser": la liste vide
    - si l'instruction est d'aller à un workflow x, j'appelle récursivement ma fonction go avec comme paramètre
    -- la liste des réussis
    -- la liste des tests pour le workflow x.

    Pour les refusés, j'appelle récursivement ma fonction go avec comme paramètre
    -- la liste des refusés
    -- la liste des tests privés du premier élément.
    et je stocke ça dans échoués2.

    Le résultat de la fonction go sera reussis2 concaténé à échoués2.

    Ca se fait bien en récursif. Je pense que c'est plus compliqué en itératif.