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.
[^] # Re: Solution en Haskell.
Posté par Guillaume.B . 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
gofonctionne 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
goavec 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
goavec 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
goserareussis2concaténé àéchoués2.Ca se fait bien en récursif. Je pense que c'est plus compliqué en itératif.