diff --git a/app/Main.hs b/app/Main.hs index 8dd1ea1..a359dd4 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -104,12 +104,21 @@ puzzle2 = [ T.show . sum . concatMap - (mapMaybe (\n -> guard (isRepetition n) $> n) . uncurry enumFromTo) + (mapMaybe (\n -> guard (isRepetition2 n) $> n) . uncurry enumFromTo) + , T.show + . sum + . concatMap + (mapMaybe (\n -> guard (isRepetitionN n) $> n) . uncurry enumFromTo) ] } newtype ID = ID Int deriving newtype (Eq, Ord, Show, Num, Enum) -isRepetition :: ID -> Bool -isRepetition (T.show -> n) = uncurry (==) $ T.splitAt (T.length n `div` 2) n +isRepetition2 :: ID -> Bool +isRepetition2 (T.show -> n) = uncurry (==) $ T.splitAt (T.length n `div` 2) n + +isRepetitionN :: ID -> Bool +isRepetitionN (T.show -> n) = flip any [1 .. T.length n `div` 2] \i -> case T.chunksOf i n of + [] -> False + x : xs -> all (== x) xs diff --git a/outputs/examples/2/2 b/outputs/examples/2/2 new file mode 100644 index 0000000..c2c99be --- /dev/null +++ b/outputs/examples/2/2 @@ -0,0 +1 @@ +4174379265 \ No newline at end of file diff --git a/outputs/real/2/2 b/outputs/real/2/2 new file mode 100644 index 0000000..c0e6144 --- /dev/null +++ b/outputs/real/2/2 @@ -0,0 +1 @@ +41823587546 \ No newline at end of file