diff --git a/sorted_digits.hs b/sorted_digits.hs new file mode 100644 index 0000000..7b6b3df --- /dev/null +++ b/sorted_digits.hs @@ -0,0 +1,18 @@ +import Data.List + +digits :: Int -> [Int] +digits n = unfoldr nextDigit n where + nextDigit 0 = Nothing + nextDigit c = Just $ (c `mod` 10, c `div` 10) + +isSorted :: Int -> Bool +isSorted n = (all (uncurry (<=)) ds') || (all (uncurry (>=)) ds'') + where ds = digits n + ds' = zip ds (maxBound : ds) + ds'' = zip ds (minBound : ds) + +main = do + print $ isSorted 123456 + print $ isSorted 1234561 + print $ isSorted 97541 + print $ isSorted 99431