Tidying
authorNeil Smith <NeilNjae@users.noreply.github.com>
Mon, 12 Dec 2022 11:37:31 +0000 (13:37 +0200)
committerNeil Smith <NeilNjae@users.noreply.github.com>
Mon, 12 Dec 2022 11:37:31 +0000 (13:37 +0200)
advent09/Main.hs

index 1e23f78ead14ea5a81a5e708cb1c7dcffc2d4c62..1314035a7f53cf49c01f5614f3cd1e09e448965e 100644 (file)
@@ -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]