Проверьте, есть ли в номере цифры в порядке - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь проверить, в порядке ли данного номера его цифры.Пример:

1479 -> TRUE

1293 -> FALSE

Есть ли правильный способ сделать это в Haskell?Я плохо знаком с языком и чувствую себя действительно потерянным в данный момент.Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Я думаю, что подход @vps достаточно уместен, но для некоторого разнообразия вы также можете выполнить работу следующим образом:

Prelude> and $ zipWith (<) <*> tail $ show 1479
True
Prelude> and $ zipWith (<) <*> tail $ show 1293
False
0 голосов
/ 24 октября 2018

Вы можете преобразовать его в строку и использовать простую рекурсию и сопоставление с образцом.

   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) 
0 голосов
/ 24 октября 2018

Моя идея такова:

ordenado n
   | mod n 10 > mod (div n 10) 10 = ordenado (div n 10)
   | n == 0 = True
   | otherwise = False
...