data Seasons = Spring | Summer | Autumn | Winter
deriving (Show, Eq)
seasonIndex Spring = 0
seasonIndex Summer = 1
seasonIndex Autumn = 2
seasonIndex Winter = 3
data Person = MakePerson String Int String|SofiaGuy String Int
deriving (Show)
my (MakePerson _ telephone _ ) = telephone
-- tree definition--
data BinaryTree = Empty|Node Int BinaryTree BinaryTree
deriving (Show,Eq)
t= Node 5 (Node 6 Empty Empty) (Node 7 (Node 8 Empty Empty) Empty)
sumTree Empty = 0
sumTree (Node v l r) = v + sumTree l + sumTree r
sumEven Empty = 0
sumEven (Node v l r)
|even v = v + sumEven l + sumEven r
|otherwise = sumEven l + sumEven r
sumLeaves Empty = 0
sumLeaves (Node v l r)
|l==Empty && r==Empty = v
|otherwise = sumLeaves l + sumLeaves r
toList Empty = []
toList (Node v l r) = v : (toList l ++ toList r)
height Empty = 0
height (Node v l r)=1 + max (height l) (height r)
level (Node v l r) 0 = [v]
level Empty k = []
level (Node v l r) k = (level l (k-1)) ++ (level r (k-1))
Решения на задачите от 10.01.07 на Антон, Светлин и Бинев (малко)
--napraveno ot Anton i Svetlin, a binev uchastvashe kato durvo i o6te ne6to
super::String->String->String
super a b = a++b++b
super2::Int->Int->Int
super2 a b = a*b + b
data Seasons = Spring | Summer | Autumn | Winter deriving (Show, Eq)
seasonIndex Spring = 0
seasonIndex Summer = 1
seasonIndex Autumn = 2
seasonIndex Winter = 3
data Person = MakePerson String Int String deriving (Show)
my (MakePerson name age address) = age
--definirane na durvoto binev
data BinTree = Empty | Node Int BinTree BinTree deriving (Show, Eq)
--tova e samiq binev
b = Node 4 (Node 3 Empty (Node 1 Empty Empty)) (Node 6 Empty Empty)
sumList [] = 0
sumList l = (head l) + (sumList(tail l))
sumTree Empty = 0
sumTree (Node v l r) = v + sumTree l + sumTree r
sumEven Empty = 0
sumEven (Node v l r) = if even v then v + sumEven l + sumEven r else sumEven l + sumEven r
sumL Empty = 0
sumL (Node v l r) = if (l==Empty)&&(r==Empty) then v else sumL l + sumL r
-- List ot vuzlite na binev
lNode Empty = []
lNode (Node v l r) = v : ((lNode l)++(lNode r))
--viso4inata na binev
heightT Empty = 0
heightT (Node v l r) = 1 + max (heightT l) (heightT r)
--Spisak ot elementite na dadeno nivo na binev
level (Node v l r) 0 = [v]
level Empty k = []
level (Node v l r) k = (level l (k-1))++(level r (k-1))