Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 6

Реализовать объединение списков-множеств

08.05.2014, 08:19. Показов 2667. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте дорогие форумчане!
Помогите пожалуйста с задачей:

Написать функцию union :: Eq a => [a] -> [a] -> [a] , объединяющую два списка, как если бы это были множества.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2014, 08:19
Ответы с готовыми решениями:

Список: реализовать объединение, пересечение и разность списков
Писали на прологе, и сегодня на паре заставили писать на хаскеле. Объединение пересечение и разность списков. А я вообще не имею понятия...

Объединение списков
Здравствуйте! Помогите, пожалуйста, с задачей: Даны 3 списка, получить 1 список, представляющий собой множество.

Объединение списков и символьное дифференцирование
Может кто нибудь построчно написать что значит каждая строка? 1) Заданы два списка L1 и L2, построить список L3, элементами которого...

6
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
08.05.2014, 10:43
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- функциональное решение
 
unionSet :: Eq a => [a] -> [a] -> [a]
unionSet s1 s2 = s1 ++ (filter (\ x -> not (x `elem` s1)) s2)
 
-- рекурсивное решение
 
unionSet' :: Eq a => [a] -> [a] -> [a]
unionSet' s [] = s
unionSet' s (c:cs) | (c `elem` s) = unionSet' s cs
                   | otherwise = (unionSet' s cs) ++ [c]
 
 
Main> unionSet [1,2,3,4] [3,4,5,6]
[1,2,3,4,5,6]
Main> unionSet' [1,2,3,4] [3,4,5,6]
[1,2,3,4,6,5]
Main> unionSet "asdf" "fgh"
"asdfgh"
Добавлено через 8 минут
А вот функция, которая делает множество из списка:

Haskell
1
2
3
4
5
6
7
8
setOf :: Eq a => [a] -> [a]
setOf [] = []
setOf (c:cs) = c : (setOf (filter (\ q -> q /= c) cs))
 
Main> setOf [1,2,3,1,2,3,3,3,2]
[1,2,3]
Main> setOf "fghfffggf"
"fgh"
1
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
08.05.2014, 18:00

Не по теме:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- ghci
Prelude> let s = (foldr (\x r -> x : filter (/= x) r) []) :: Eq a => [a] -> [a]
Prelude> :t s
s :: [()] -> [()]
 
Prelude> :t \x r -> x : filter (/= x) r
\x r -> x : filter (/= x) r :: (Eq a) => a -> [a] -> [a]
 
Prelude> :t foldr (\x r -> x : filter (/= x) r) []
foldr (\x r -> x : filter (/= x) r) [] :: (Eq a) => [a] -> [a]
 
Prelude> let setOf = foldr (\x r -> x : filter (/= x) r) []
Prelude> :t setOf
setOf :: [()] -> [()]
ghci же...
O_o

Приведение списка к множеству без рекурсии (мне нравится, как ты в последнее время несколько вариантов указываешь, и не лень же писать!)
Haskell
1
2
Prelude> foldr (\x r -> x : filter (/= x) r) [] "fghfghfghfgh"
"fgh"
1
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 6
08.05.2014, 21:01  [ТС]
Спасибо большое за помощь!
Всех с наступающим праздником Великой Победы!))
0
 Аватар для Johny153
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 8
13.05.2014, 21:53
А можете ли помочь с похожей задачей?
Написать функцию, вычитающую из первого списка второй, как если бы это были множества.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
13.05.2014, 22:03
Могу, но по правилам Форума один вопрос= одна тема. Создайте отдельную тему!
1
 Аватар для Johny153
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 8
14.05.2014, 01:35
Catstail, хорошо, благодарю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2014, 01:35
Помогаю со студенческими работами здесь

Объединение списков-множеств
Уже часа два мучаюсь, трудно дается этот язык Определите функцию, на вход которой подаются два списка – множества. Функция должна...

Пересечение списков-множеств
Здравствуйте, помогите, пожалуйста, решить задачу. Заранее благодарна. Определите функцию, зависящую от двух аргументов u и v,...

Пересечение списков-множеств
эта функция должна возвращать список из элементов, которые встречаются в каждом из двух списков-аргументов. Заранее спасибо за помощь

Пересечение списков-множеств
Здравствуйте, помогите, пожалуйста, решить задачу. Заранее благодарна. Определите функцию, зависящую от двух аргументов u и v,...

Объединение списков
Добрый день, не понимаю как правильно решить в SWI-Prolog Есть элементарная задача: /* Напишите предикат p(+L, -S) - истинный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru