feat: solve day2 part1
This commit is contained in:
parent
12d392e578
commit
2e8920cae1
2 changed files with 40 additions and 0 deletions
39
app/Day2.hs
Normal file
39
app/Day2.hs
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import System.Environment (getArgs)
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
input <- readFile . head =<< getArgs
|
||||||
|
print $ part1 input
|
||||||
|
|
||||||
|
-- print $ part2 input
|
||||||
|
|
||||||
|
part1 :: String -> Int
|
||||||
|
part1 = sum . filter invalid . concat . map ids . map parse . splitOn ','
|
||||||
|
|
||||||
|
splitOn :: (Eq a) => a -> [a] -> [[a]]
|
||||||
|
splitOn delim xs = case dropWhile (== delim) xs of
|
||||||
|
[] -> []
|
||||||
|
s' -> xs' : splitOn delim s''
|
||||||
|
where
|
||||||
|
(xs', s'') = break (== delim) s'
|
||||||
|
|
||||||
|
parse :: String -> (Int, Int)
|
||||||
|
parse = group . map read . splitOn '-'
|
||||||
|
where
|
||||||
|
group :: (Show a) => [a] -> (a, a)
|
||||||
|
group (x : y : []) = (x, y)
|
||||||
|
group x = error $ "group: " ++ show x ++ "is not two elements"
|
||||||
|
|
||||||
|
ids :: (Int, Int) -> [Int]
|
||||||
|
ids (start, end) = [start .. end]
|
||||||
|
|
||||||
|
invalid :: Int -> Bool
|
||||||
|
invalid i =
|
||||||
|
let s = show i
|
||||||
|
len = length s
|
||||||
|
half = take (len `div` 2) s
|
||||||
|
in s == half ++ half
|
||||||
|
|
||||||
|
testInput = "11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124"
|
||||||
1
input/day2.txt
Normal file
1
input/day2.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
5529687-5587329,50-82,374-560,83-113,226375-287485,293169-368713,2034-2634,9945560-9993116,4872472-4904227,3218-5121,1074-1357,15451-26093,483468003-483498602,51513-85385,1466-1992,7600-13034,710570-789399,407363-480868,3996614725-3996662113,3-17,5414907798-5414992881,86274-120443,828669-909588,607353-700604,4242340614-4242556443,28750-44009,935177-1004747,20-41,74678832-74818251,8484825082-8484860878,2784096938-2784156610,5477-7589,621-952,2424167145-2424278200,147085-217900,93043740-93241586
|
||||||
Loading…
Add table
Add a link
Reference in a new issue