• [^] # Re: Solution en Haskell

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

    En se rendant compte qu'un cycle est un enchainement tilt, rotation, tilt, rotation, tilt, rotation, tilt, rotation, on peut écrire le code plus simplement.

    part2 :: Grid -> Int
    part2 grid = load . transpose $ grids !! y' where 
     (x, y) = findRepetition grids
     y' = x + (1000000000 - x) `mod` (y-x)
     grids = iterate' cycle (transpose grid)
     step = reverse . transpose . tilt
     cycle = step . step . step . step

    Et du coup, la fonction tiltInDirection ne sert plus à rien.
    On gagne même un peu en temps d'exécution: 400ms.