summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2024/11.hs14
1 files changed, 3 insertions, 11 deletions
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 (+)