美文网首页
Haskell 99 Problems

Haskell 99 Problems

作者: 梵_尘 | 来源:发表于2017-04-07 15:47 被阅读47次

    H-99: Ninety-Nine Haskell Problems 2017-4-7

    首先附上地址: 99 questions/1 to 10 - HaskellWiki

    说明:问题的答案只代表我自己的思路,如果你有更好的解决方法,请告诉我。

    Problem 1

    序列最后一个元素 Ex: [1,2,3,4] -> 4

    myLast :: [a] -> a
    myLast []     = error "Empty List"
    myLast [x]    = x
    myLast (_:xs) = myLast xs 
    

    Problem 2

    序列倒数第二个元素 Ex: [1,2,3,4] -> 3

    myButLast :: [a] -> a
    myButLast []     = error "Empty List"
    myButLast [x]    = error "Only One Element"
    myButLast [x,_]  = x
    myButLast (_:xs) = myButLast xs
    

    Problem 3

    序列的第k个元素 Ex: elementAt [1,2,3] 2 -> 2

    elementAt :: [a] -> Int -> a
    elementAt xs n = xs !! (n-1)
    

    Problem 4

    序列的长度 Ex: [1,2,3,4] -> 4

    myLength :: [a] -> Int
    myLength []     = 0
    myLength (_:xs) = 1 + myLength xs
    

    Problem 5

    反转序列 Ex: [1,2,3] -> [3,2,1]

    myReverse :: [a] -> [a]
    myReverse []     = []
    myReverse (x:xs) = (reverse xs) ++ [x]
    

    Problem 6

    判断是否是一个回文序列 Ex: isPalindrome [1,2,3] -> False; isPalindrome "madamimadam" -> True; isPalindrome [1,2,4,8,16,8,4,2,1] -> True

    isPalindrome :: (Eq a) => [a] -> Bool
    isPalindrome xs = if (length xs) `mod` 2 == 0
                      then False
                      else xs == reverse xs
    

    相关文章

      网友评论

          本文标题:Haskell 99 Problems

          本文链接:https://www.haomeiwen.com/subject/ufmhattx.html