检查数字是否按顺序排列

时间:2018-10-24 08:29:51

标签: sorting haskell int digits

我正在尝试检查给定的数字是否正确。示例:

1479->是

1293->假

在Haskell中有正确的方法吗?我是该语言的新手,此刻真的感到迷茫。谢谢。

3 个答案:

答案 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) 
相关问题