Clean bench

This commit is contained in:
ctsk
2023-08-30 13:39:18 +02:00
parent 69dbc4e001
commit eb35f60231
4 changed files with 10 additions and 16 deletions

View File

@@ -15,7 +15,7 @@ paths =
] ]
solutions :: [(Integer, [Day], FilePath)] solutions :: [(Integer, [Day], FilePath)]
solutions = filter (\(n, d, p) -> length d > 1) $ zip3 [1 ..] days paths solutions = filter (\(n, d, p) -> not (null d)) $ zip3 [1 ..] days paths
makeGroup :: (Show a) => (a, [Day], FilePath) -> Benchmark makeGroup :: (Show a) => (a, [Day], FilePath) -> Benchmark
makeGroup (n, d, f) = makeGroup (n, d, f) =
@@ -33,5 +33,5 @@ makeBenchmarks f = zipWith name [1 ..] . map (makeBench f)
groups :: [Benchmark] groups :: [Benchmark]
groups = map makeGroup solutions groups = map makeGroup solutions
main = main :: IO ()
defaultMain groups main = defaultMain groups

View File

@@ -11,14 +11,14 @@ type Intermediate = [(Interval, Interval)]
makeInterval :: (Ord a) => a -> a -> (a, a) makeInterval :: (Ord a) => a -> a -> (a, a)
makeInterval a b makeInterval a b
| a > b = (b, a) | a > b = (b, a)
| otherwise = (a, b) | otherwise = (a, b)
parser :: Parser Intermediate parser :: Parser Intermediate
parser = someLines ((,) <$> interval <* char ',' <*> interval) parser = someLines ((,) <$> interval <* char ',' <*> interval)
where where
interval :: Parser Interval interval :: Parser Interval
interval = makeInterval <$> number <* char '-' <*> number interval = makeInterval <$> number <* char '-' <*> number
contains :: Interval -> Interval -> Bool contains :: Interval -> Interval -> Bool
contains (a, b) (c, d) = a <= c && b >= d contains (a, b) (c, d) = a <= c && b >= d
@@ -29,9 +29,6 @@ overlap (a, b) (c, d) = not (b < c || a > d)
sym :: (a -> a -> Bool) -> (a -> a -> Bool) sym :: (a -> a -> Bool) -> (a -> a -> Bool)
sym f a b = f a b || f b a sym f a b = f a b || f b a
pairFilter :: (a -> b -> Bool) -> [(a, b)] -> [(a, b)]
pairFilter f = filter (uncurry f)
part1 :: Intermediate -> Int part1 :: Intermediate -> Int
part1 = count (uncurry $ sym contains) part1 = count (uncurry $ sym contains)

View File

@@ -71,7 +71,4 @@ part2 :: Intermediate -> Vector Char
part2 = uncurry ((fmap head .) . foldl (move CM9001)) part2 = uncurry ((fmap head .) . foldl (move CM9001))
day :: Day day :: Day
day = parsecDay parser (definitive . part1, definitive . part2) day = parsecDay parser (definitive . part1, definitive . part2)
fast :: Day
fast = day

View File

@@ -30,5 +30,5 @@ days =
, [D02.day] , [D02.day]
, [D03.day] , [D03.day]
, [D04.day] , [D04.day]
, [D05.day, D05.fast] , [D05.day]
] ]