-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcomplemento.hs
More file actions
39 lines (30 loc) · 1.23 KB
/
complemento.hs
File metadata and controls
39 lines (30 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
data Tree t = NulT | Node t (Tree t) (Tree t)
deriving (Show)
--20150407.hs
-- Eu não sabia o que o collapse fazia, e como resolvi esses exercícios ja em casa tive que pergun Mas agora tá feito.
-- teste: collapse (Node 5 (Node 8 (NulT) (NulT)) (Node 3 (Node 2 (NulT) (NulT)) (NulT)))
collapse :: Tree t -> [t]
collapse NulT = []
collapse (Node n left right) = (n : (collapse left)) ++ collapse right
--20150409.hs
--insertElement (Node 5 (Node 8 (NulT) (NulT)) (Node 3 (Node 2 (NulT) (NulT)) (NulT))) 7
insertElement :: Tree t -> t -> Tree t
insertElement NulT e = Node e NulT NulT
insertElement (Node t left right) e = Node t (insertElement left e) right
--criarArvore [5, 8, 7, 3, 2] insertElement
criarArvore :: Ord t => [t] -> (Tree t -> t -> Tree t) -> Tree t
criarArvore list insertElement = foldr permuta NulT list
permuta :: t -> Tree t -> Tree t
permuta = \n tree -> insertElement tree n
igual :: Eq t => [t] -> t -> Bool
igual [] n = False
igual (l:st) n
|l == n = True
|otherwise = igual st n
--Slide 05 #20
--fnw
removeRepetition :: Eq t => [t] -> t -> [t]
removeRepetition [] _ = []
removeRepetition list n = foldr (/= n) [] list
inter :: Eq t => [t] -> [t] -> [t]
inter l1 (l:st) = [n | n <- l1, igual l1 l] ++ igual l1 st