faster Solution for 5

master
Abhinav Sarkar 2018-12-07 13:17:49 +05:30
parent 3db4dc2e9b
commit 780d339a68
1 changed files with 7 additions and 7 deletions

14
5/5.hs
View File

@ -25,20 +25,20 @@ simplify acc s
then simplify acc (S.drop 2 s)
else simplify (acc |> x) (S.drop 1 s)
collapse :: S.Seq Char -> Int
collapse :: S.Seq Char -> S.Seq Char
collapse s =
let simplified = simplify S.empty s
in if S.length simplified == S.length s
then S.length s
then s
else collapse simplified
betterCollapse :: S.Seq Char -> (Char, Int)
betterCollapse :: S.Seq Char -> S.Seq Char
betterCollapse s =
minimumBy (compare `on` snd)
. map (\c -> (c, collapse $ S.filter (\c' -> toLower c' /= toLower c) s))
minimumBy (compare `on` S.length)
. map (\c -> collapse $ S.filter (\c' -> toLower c' /= toLower c) s)
$ ['a' .. 'z']
main = do
input <- S.fromList . filter (/= '\n') <$> getContents
putStrLn $ "Size = " ++ show (collapse input)
putStrLn $ "Better Size = " ++ show (betterCollapse input)
putStrLn $ "Size = " ++ show (S.length $ collapse input)
putStrLn $ "Better Size = " ++ show (S.length $ betterCollapse (collapse input))