From dbb18933b67481cc9ddfd7e8ab4aefa1d65e6a38 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sat, 14 Dec 2024 23:18:00 +0100 Subject: Optimise 11 --- 2024/11.hs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to '2024/11.hs') diff --git a/2024/11.hs b/2024/11.hs index 1191d17..070dd7b 100644 --- a/2024/11.hs +++ b/2024/11.hs @@ -1,19 +1,11 @@ -import qualified Data.Map.Strict as Map +import qualified Data.IntMap.Strict as Map main :: IO () main = do s0 <- map (read @Int) . words <$> getContents - let ndigs10 0 = 1 - ndigs10 n = pre (4::Int) - where pre p | n >= 10 ^ p = pre (2*p) - | otherwise = bin 0 p - bin lo hi | lo == hi - 1 = hi - | n >= 10 ^ mid = bin mid hi - | otherwise = bin lo mid - where mid = (lo + hi) `quot` 2 let splitHalf n = - let nd = ndigs10 n - in if even nd then Just $ n `quotRem` (10 ^ (ndigs10 n `quot` 2)) + let nd = length (show n) + in if even nd then Just $ n `quotRem` (10 ^ (nd `quot` 2)) else Nothing let blink = Map.fromListWith (+) -- cgit v1.2.3-70-g09d2