Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.Char
- longestNum [] = []
- longestNum (x:xs) =
- let withCount = foldl (\((prev, cnt):acc) x ->
- if x==prev then (x,cnt+1):acc else (x,1):(prev,cnt):acc) [(x, 1)] xs
- digitsOnly = filter (isDigit . fst) withCount
- max = foldl1 (\(maxChar, maxCount) (candidateChar, candidateMax) ->
- if candidateMax > maxCount then (candidateChar, candidateMax) else (maxChar, maxCount)) digitsOnly
- in if digitsOnly == []
- then []
- else take (snd max) $ repeat (fst max)
- reduceStr :: String -> String
- reduceStr xs = let res = (reduceStrOnce xs)
- in
- if(xs == res)
- then res
- else reduceStr res
- reduceStrOnce :: String -> String
- reduceStrOnce [] = []
- reduceStrOnce [x] = [x]
- reduceStrOnce (x:y:xs) = if((((toUpper x) == y) || ((toLower x) == y)) && x /= y)
- then reduceStrOnce(xs)
- else [x] ++ reduceStrOnce(y:xs)
- line :: (Double , Double ) -> (Double , Double ) -> (Double -> Double)
- line (x1,y1) (x2,y2) = (\x -> y1 + (((x-x1)*(y2-y1)) /(x2-x1)))
- liesOn :: (Double -> Double) ->((Double , Double) -> Bool)
- liesOn f = (\(x1,y1) -> (if (f x1) == y1
- then True
- else False))
- data BTree = NullT | Node (Float,Float) BTree BTree
- orderedTree :: BTree -> Bool
- orderedTree tree = compareTree (inorderTree tree)
- inorderTree :: BTree ->[(Float,Float)]
- inorderTree NullT = []
- inorderTree (Node (a,b) t1 t2) = (inorderTree t1) ++ [(a,b)] ++ (inorderTree t2)
- compareTree :: [(Float,Float)] -> Bool
- compareTree [] = True
- compareTree [x] = True
- compareTree ((a,b) :(c,d):xs)
- | (c <= a) && (b <= d) = compareTree ((c,d):xs)
- | otherwise = False
- verify actual expected =
- if actual == expected
- then "OK"
- else error ("Expected " ++ (show expected) ++ " actual " ++ (show actual))
- main = do
- print "task 1"
- print $ verify (longestNum "") ""
- print $ verify (longestNum "1") "1"
- print $ verify (longestNum "a") ""
- print $ verify (longestNum "122") "22"
- print $ verify (longestNum "122000") "000"
- print $ verify (longestNum "11111ddddddd11111") "11111"
- print $ verify (longestNum "ab1d22b1b434442cd31d22e1eff") "444"
- print $ verify (longestNum "44ab1444111d22b1b4344442cd31ccccccd224e1eff44") "4444"
- print "task 2 reduceStr"
- -- print $ verify (reduceStr "") ""
- print $ verify (reduceStr "Aa") ""
- print $ verify (reduceStr "BaAb") ""
- print $ verify (reduceStr "aabbccddAABBCCDD") "aabbccddAABBCCDD"
- print $ verify (reduceStr "aCaAcb") "ab"
- print $ verify (reduceStr "dabAcCaCBAcCcaDD") "dabCBAcaDD"
- print $ verify (reduceStr "abcdDCBA") ""
- print "task 3 line"
- print $ verify (line (1, 1) (3, 2) 0) 0.5
- print $ verify (line (1, 1) (3, 2) 2) 1.5
- print $ verify (line (1, 1) (3, 2) 1) 1
- print $ verify (line (1, 1) (3, 2) 3) 2
- print $ verify (line (1, 1) (3, 2) (-1)) 0
- print "task 3 liesOn"
- print $ verify (liesOn (line (1, 1) (3, 2)) (0, 0.5)) True
- print $ verify (liesOn (line (1, 1) (3, 2)) (1, 1)) True
- print $ verify (liesOn (line (1, 1) (3, 2)) (3, 2)) True
- print $ verify (liesOn (line (1, 1) (3, 2)) (2, 1.5)) True
- print $ verify (liesOn (line (1, 1) (3, 2)) ((-1), 0)) True
- print $ verify (liesOn (line (1, 1) (3, 2)) (1, 0)) False
- print "task 4 orderedTree"
- print $ verify (orderedTree t11) False
- print $ verify (orderedTree t12) True
- print $ verify (orderedTree t13) False
- print $ verify (orderedTree t14) True
- print $ verify (orderedTree t1) True
- print $ verify (orderedTree t2) False
- -- print $ verify (orderedTree t15) False
- t11 = Node (1.0, 3.0) (Node (1.0, 4.0) NullT NullT) NullT
- t12 = Node (1.0, 3.0) (Node (2.0, 2.5) NullT NullT) NullT
- t13 = Node (1.0, 3.0) NullT (Node (2.0, 3.5) NullT NullT)
- t14 = Node (1.0, 3.0) NullT (Node (0.0, 3.5) NullT NullT)
- t15 = Node (1.0, 10.0) (Node (2.0, 9.0) NullT (Node (1.0, 15.0) NullT NullT)) NullT
- t1 = Node (3.0, 10.0) (Node (5.0, 8.0) (Node (6.0, 7.0) NullT NullT)
- (Node (4.0, 9.0) NullT NullT))
- (Node (2.0, 12.0) NullT
- (Node (1.0, 15.0) NullT NullT))
- t2 = Node (3.0, 10.0) (Node (5.0, 8.0) (Node (6.0, 7.0) NullT NullT)
- (Node (7.0, 9.0) NullT NullT))
- (Node (2.0, 12.0) NullT
- (Node (1.0, 15.0) NullT NullT))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement