我正在尝试检查给定的数字是否正确。示例:
1479->是
1293->假
在Haskell中有正确的方法吗?我是该语言的新手,此刻真的感到迷茫。谢谢。
答案 0 :(得分:6)
我认为@vps方法足够合适,但是对于某些变体,您也可以按照以下方式进行工作;
Prelude> and $ zipWith (<) <*> tail $ show 1479
True
Prelude> and $ zipWith (<) <*> tail $ show 1293
False
答案 1 :(得分:1)
我的想法是这样的:
ordenado n
| mod n 10 > mod (div n 10) 10 = ordenado (div n 10)
| n == 0 = True
| otherwise = False
答案 2 :(得分:0)
您可以将其转换为String并使用简单的递归和模式匹配。
checkInOrder :: Int -> Bool
checkInOrder x = isInOrder $ show x
isInOrder :: (Ord a) => [a] -> Bool
isInOrder [] = True
isInOrder [x] = True
isInOrder (x:y:xs) = (x < y) && (isInOrder (y:xs))
main = print (checkInOrder 1234)