Решенеия на задачите от упражненията

Решения на задачите от 10.01.07

Решения на задачите от 10.01.07

от Калин Николов -
Number of replies: 2
Решения на задачите от 10.01.07
In reply to Калин Николов

Re: Решения на задачите от 10.01.07

от Климентина Русева -

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))

In reply to Калин Николов

Решения на задачите от 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))