diff --git a/2019/day4/day4.hs b/2019/day4/day4.hs new file mode 100644 index 0000000..bc5fd91 --- /dev/null +++ b/2019/day4/day4.hs @@ -0,0 +1,28 @@ +import Data.List + +main = do + let bottom = 130254 + let top = 678275 + print (day4a bottom top) + print (day4b bottom top) + +day4a bottom top = dumbbrute bottom top p 0 +day4b bottom top = dumbbrute bottom top p' 0 + +dumbbrute x y p acc + | x'<=y = dumbbrute x' y p (if p (numexpl x) then acc+1 else acc) + | otherwise = acc + where x' = succ x + +p x + | sort x /= x = False + | nub x == x = False + | otherwise = True + +p' x + | sort x /= x = False + | 2 `elem` (map length $ group x) = True + | otherwise = False + +numexpl 0 = [] +numexpl x = numexpl (x `div` 10) ++ [x `mod` 10]