Day 2 done
This commit is contained in:
34
app/2.hs
34
app/2.hs
@ -1,6 +1,36 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE LambdaCase, OverloadedStrings #-}
|
||||
module Main where
|
||||
|
||||
import Data.Text (Text)
|
||||
import Data.Text qualified as T
|
||||
import Data.Text.IO qualified as T
|
||||
import Data.Functor
|
||||
|
||||
parse :: Text -> [(Int,Int)]
|
||||
parse = map
|
||||
((\(a,b) -> (read (T.unpack a), read (T.unpack $ T.drop 1 b))) . T.breakOn "-") .
|
||||
T.split (==',')
|
||||
|
||||
solve1 :: [(Int,Int)] -> Int
|
||||
solve1 = sum . go . (>>= \(a,b) -> [a..b])
|
||||
where
|
||||
go :: [Int] -> [Int]
|
||||
go = filter
|
||||
(\a -> let d = T.show a in uncurry (==) $
|
||||
T.splitAt (T.length d `div` 2) d)
|
||||
|
||||
solve2 :: [(Int,Int)] -> Int
|
||||
solve2 = sum . go . (>>= \(a,b) -> [a..b])
|
||||
where
|
||||
go :: [Int] -> [Int]
|
||||
go = filter
|
||||
(\a -> let d = T.show a in
|
||||
or $ [1..T.length d - 1] >>= \i ->
|
||||
let c = T.chunksOf i d in pure $
|
||||
all (== head c) c)
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main = pure ()
|
||||
main = T.readFile "inputs/2" <&> parse >>= \i ->
|
||||
print (solve1 i) >>
|
||||
print (solve2 i)
|
||||
|
||||
Reference in New Issue
Block a user