-expandRows (Galaxies gs (V2 r0 c0, V2 r1 c1)) expansions scale =
- Galaxies gs' (V2 r0 c0, V2 (r1 + nExp) c1)
- where nExp = length expansions * scale
- gs' = foldr (shiftRows scale) gs expansions
-expandCols (Galaxies gs (V2 r0 c0, V2 r1 c1)) expansions scale =
- Galaxies gs' (V2 r0 c0, V2 r1 (c1 + nExp))
- where nExp = length expansions * scale
- gs' = foldr (shiftCols scale) gs expansions
-
-shiftRows, shiftCols :: Int -> Int -> Gals -> Gals
-shiftRows scale n gs = S.union small large'
- where (small, large) = S.partition (\(V2 r _) -> r < n) gs
- large' = S.map (^+^ (V2 scale 0)) large
-shiftCols scale n gs = S.union small large'
- where (small, large) = S.partition (\(V2 _ c) -> c < n) gs
- large' = S.map (^+^ (V2 0 scale)) large
+expandRows galaxies expansions scale = foldr (shiftRows scale) galaxies expansions
+expandCols galaxies expansions scale = foldr (shiftCols scale) galaxies expansions
+
+shiftRows, shiftCols :: Int -> Int -> Galaxies -> Galaxies
+shiftRows scale n galaxies = S.union small large'
+ where (small, large) = S.partition (\(V2 r _) -> r < n) galaxies
+ large' = S.map (^+^ (V2 (scale - 1) 0)) large
+shiftCols scale n galaxies = S.union small large'
+ where (small, large) = S.partition (\(V2 _ c) -> c < n) galaxies
+ large' = S.map (^+^ (V2 0 (scale - 1))) large