A collection of implementations of common algorithms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
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
|