Update day 2
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
isSortedGradually' :: (Integer -> Integer -> Bool) -> Bool -> [Integer] -> Bool
|
isSortedGradually' :: (Integer -> Integer -> Bool) -> Bool -> [Integer] -> Bool
|
||||||
isSortedGradually' f mercy (x1:x2:xs) =
|
isSortedGradually' f mercy (x1:x2:xs) =
|
||||||
(diff >= 1 && diff <= 3 && f x1 x2 && isSortedGradually' f mercy (x2:xs))
|
(diff >= 1 && diff <= 3 && f x1 x2 && isSortedGradually' f mercy (x2:xs))
|
||||||
@@ -8,14 +9,8 @@ isSortedGradually' f mercy _ = True
|
|||||||
isSortedGradually f (x:xs) = isSortedGradually' f True (x:xs)
|
isSortedGradually f (x:xs) = isSortedGradually' f True (x:xs)
|
||||||
|| isSortedGradually' f False xs
|
|| isSortedGradually' f False xs
|
||||||
|
|
||||||
isAscending :: [Integer] -> Bool
|
|
||||||
isAscending xs = isSortedGradually (<) xs
|
|
||||||
|
|
||||||
isDescending :: [Integer] -> Bool
|
|
||||||
isDescending xs = isSortedGradually (>) xs
|
|
||||||
|
|
||||||
isSafe :: [Integer] -> Bool
|
isSafe :: [Integer] -> Bool
|
||||||
isSafe xs = isAscending xs || isDescending xs
|
isSafe xs = isSortedGradually (<) xs || isSortedGradually (>) xs
|
||||||
|
|
||||||
main :: IO()
|
main :: IO()
|
||||||
main = interact $ show . sum . map (fromEnum . isSafe . map read . words) . lines
|
main = interact $ show . sum . map (fromEnum . isSafe . map read . words) . lines
|
||||||
|
|||||||
15
02/silver.hs
15
02/silver.hs
@@ -1,20 +1,11 @@
|
|||||||
|
|
||||||
import Debug.Trace
|
|
||||||
|
|
||||||
debug = flip trace
|
|
||||||
|
|
||||||
isSortedGradually :: (Integer -> Integer -> Bool) -> [Integer] -> Bool
|
isSortedGradually :: (Integer -> Integer -> Bool) -> [Integer] -> Bool
|
||||||
isSortedGradually f (x1:x2:xs) = (f x1 x2) && diff >= 1 && diff <= 3 && isSortedGradually f (x2:xs)
|
isSortedGradually f (x1:x2:xs) = (f x1 x2) && diff >= 1 && diff <= 3 && isSortedGradually f (x2:xs)
|
||||||
where diff = abs (x1 - x2)
|
where diff = abs (x1 - x2)
|
||||||
isSortedGradually f (x1:_) = True
|
|
||||||
isSortedGradually f _ = True
|
isSortedGradually f _ = True
|
||||||
|
|
||||||
isAscending :: [Integer] -> Bool
|
isSafe :: [Integer] -> Bool
|
||||||
isAscending = isSortedGradually (<)
|
isSafe xs = isSortedGradually (<) xs || isSortedGradually (>) xs
|
||||||
isDescending :: [Integer] -> Bool
|
|
||||||
isDescending = isSortedGradually (>)
|
|
||||||
|
|
||||||
ok xs = isAscending xs || isDescending xs
|
|
||||||
|
|
||||||
main :: IO()
|
main :: IO()
|
||||||
main = interact $ show . sum . map (fromEnum . ok . map (read :: (String -> Integer)) . words) . lines
|
main = interact $ show . sum . map (fromEnum . isSafe . map (read :: (String -> Integer)) . words) . lines
|
||||||
|
|||||||
Reference in New Issue
Block a user