From: Neil Smith Date: Mon, 12 Dec 2022 11:37:31 +0000 (+0200) Subject: Tidying X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-22.git;a=commitdiff_plain;h=75c68345bc86cf90827b713603582ef52902429d Tidying --- diff --git a/advent09/Main.hs b/advent09/Main.hs index 1e23f78..1314035 100644 --- a/advent09/Main.hs +++ b/advent09/Main.hs @@ -33,12 +33,12 @@ main = print $ part1 steps print $ part2 steps -part1 :: Path -> Int -part1 steps = S.size $ rope' ^. trace - where rope' = ropeSteps (newRope 1) steps +part1, part2 :: Path -> Int +part1 steps = S.size $ rope ^. trace + where rope = ropeSteps (newRope 1) steps -part2 steps = S.size $ rope' ^. trace - where rope' = ropeSteps (newRope 9) steps +part2 steps = S.size $ rope ^. trace + where rope = ropeSteps (newRope 9) steps expandPath :: [Direction] -> Path @@ -48,7 +48,6 @@ expandPath = concatMap expandStep expandStep (D n) = replicate n (V2 0 -1) expandStep (R n) = replicate n (V2 1 0) - manhattan :: Position -> Position -> Int manhattan p1 p2 = max dx dy where V2 dx dy = abs $ p1 ^-^ p2 @@ -67,21 +66,17 @@ ropeSteps rope steps = foldl' ropeStep rope steps ropeStep :: Rope -> Position -> Rope ropeStep rope step = rope & headK .~ h - & knots .~ (reverse kts') - & trace %~ S.insert (head kts') + & knots .~ (reverse kts) + & trace %~ S.insert kt where h = (rope ^. headK) ^+^ step - kts = rope ^. knots - (_, kts') = foldl' knotStep (h, []) kts - - --- foldl' (f) (hr, []) knots + (kt, kts) = foldl' knotStep (h, []) $ rope ^. knots -- kts +knotStep :: (Position, [Position]) -> Position -> (Position, [Position]) knotStep (h, ks) kt = (kt', (kt':ks)) where kt' = if kt `touching` h then kt else kt ^+^ (kt `towards` h) - -- Parse the input file pathP :: Parser [Direction]