Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
univerprogramer
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 6
1

Функции структуры дерева(реализация)

07.06.2018, 11:30. Просмотров 775. Ответов 1

Дописать функции для данного кода:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
data Person a = Leaf a | Branch a(Person a) (Person a) deriving(Eq, Show)
 
work = Branch "Mark-Boss"
                (Branch "Anton-SubBoss"
                      (Leaf "John-SubAnton")
                      (Leaf "Karol-SubAnton")
                 )
            (Branch "Daron-Director"
                 (Leaf "Nevil-SubDaron")
                 (Leaf "Fred-SubDaron")
             )
     
getAllSubordinates :: Person a -> [a]
getAllSubordinates (Leaf a) = [a]
getAllSubordinates (Branch a(l)(r)) = [a] ++ getAllSubordinates l ++ getAllSubordinates r
 
 
getSubordinate :: Eq a=> Person a -> a -> [Person a]
getSubordinate (Leaf a) _ = [] 
 
getSubordinate (Branch a(l)(r)) name = if a == name then [l,r] else (getSubordinate l name) ++ (getSubordinate r name)
--------------------------------- реализовать данные функции --------------------------------
3) getBoss, возвращающую начальника указанного работника.

4) getList, возвращающую список пар, первым элементом ко-
торых является имя работника, а вторым — количество его
подчиненных (включая косвенных).
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2018, 11:30
Ответы с готовыми решениями:

Функции-члены структуры. Реализация
Здравствуйте. Пишу на Плюсах, но и Сишкой интересуюсь изредка (предок все-таки). В Си, насколько...

реализация n-дерева
помогите пожалуйста с реализацией n-дерева необходимо создать дерево,рисуя связи между...

Реализация дерева
Нужно реализовать дерево подобного вида: BRA - ARG : 0 - 2 BRA - FRA : 2 - 1 ...

Реализация 2-3 дерева
Помогите пожалуйста реализовать 2-3 дерево

Реализация бинарного дерева
Доброго времени суток, уважаемые форумчане. Возник вопрос по реализации бинарного дерева на С++, а...

1
Curry
2993 / 2074 / 257
Регистрация: 01.06.2013
Сообщений: 4,527
Записей в блоге: 9
07.06.2018, 12:22 2
Лучший ответ Сообщение было отмечено univerprogramer как решение

Решение

Haskell
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
40
import Control.Applicative 
 
data Person a = Leaf a | Branch a(Person a) (Person a) deriving(Eq, Show)
 
work :: Person String
work = Branch "Mark-Boss" 
              (Branch "Anton-SubBoss"
                      (Leaf "John-SubAnton")
                      (Leaf "Karol-SubAnton")
              )
              (Branch "Daron-Director"
                      (Leaf "Nevil-SubDaron")
                      (Leaf "Fred-SubDaron")
              )
 
getAllSubordinates :: Person a -> [a]
getAllSubordinates (Leaf a) = [a]
getAllSubordinates (Branch a(l)(r)) = [a] ++ getAllSubordinates l ++ getAllSubordinates r
 
 
getSubordinate :: Eq a => Person a -> a -> [Person a]
getSubordinate (Leaf _) _ = [] 
getSubordinate (Branch a(l)(r)) name = if a == name then [l,r] else (getSubordinate l name) ++ (getSubordinate r name)
 
-- getBoss, возвращающую начальника указанного работника. 
getBoss :: Eq a => Person a -> a -> Maybe (Person a)
getBoss t w = go Nothing t
    where go p (Leaf n) = to p n
          go p b@(Branch n l r) = to p n <|> go (Just b) l <|> go (Just b) r
          to p n = if w == n then p else Nothing
 
{- getList, возвращающую список пар, первым элементом ко- 
торых является имя работника, а вторым — количество его 
подчиненных (включая косвенных). -}
getList :: Eq a => Person a -> [(a,Int)]
getList (Leaf n) = [(n,0)]
getList (Branch n l r) = let ll = getList l
                             lr = getList r 
                             s = sum . map snd
                         in (n,s ll + s lr + 2) : ll ++ lr
2
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2018, 12:22

Реализация дерева из json
Здравствуйте! У меня есть файл json, как его отобразить в виде дерева в windowsForm? нигде не могу...

Реализация N-арного дерева
Здравствуйте. Столкнулся с проблемой - необходимо реализовать на языке Go генерацию N-арного...

Реализация дерева поиска
Мне крайне срочно необходимо реализовать дерево поиска на с++(чтобы пользователь сам вводил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.