-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.hs
29 lines (24 loc) · 922 Bytes
/
run.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Data.Aeson
import Data.List ( permutations
, group
, minimum
, maximum
, minimumBy
, maximumBy
, sort
, subsequences )
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HashMap
import Text.Parsec
unsafeRight (Right x) = x
parseAll :: String -> [Int]
parseAll = -- map unsafeRight .
map read . lines
part1 = length . filter ((==150) . sum) . subsequences
part2 input = length . filter ((== minsize) . length) $ exactly
where exactly = filter ((==150) . sum) . subsequences $ input
minsize = minimum . map (length) $ exactly
main = do
input <- reverse . sort . parseAll <$> readFile "input.txt"
print (part1 input)
print (part2 input)