Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Заблокирован
1

Функция объединения двух списков

07.10.2015, 09:49. Показов 2819. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Помогите пожалуйста решить такую задачу :
Разработать функцию, находящую теоретико-множественное объединение двух списков.
Например:
Вход: (1 2 3 4 5), (4 5 6 7).
Выход: (1 2 3 4 5 6 7).

Спасибо за внимание.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2015, 09:49
Ответы с готовыми решениями:

Написать программу объединения двух отсортированных списков в один
При этом порядок сортировки в списке-результате должен сохраняться.

Функция суммы попарных слагаемых двух списков
Помогите пожалуйста! Нужно написать функцию с использованием макросов и функционалов, которая...

Функция дежурства элементов двух списков в созданном новом списке
Здравствуйте! Снова башка не варит. Нужно составить функцию дежурства. В качестве аргументов...

Функция сравнения списков
Задание таково: Разработать функционал для сравнения двух многоуровневых списков поэлементно, на...

5
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
07.10.2015, 10:30 2
Лучший ответ Сообщение было отмечено Flystyle как решение

Решение

Lisp
1
2
3
4
5
6
7
(defun -union (w v)
  (cond ((null w)  v)
    ((member (car w) v) (-union (cdr w) v))
    ((cons (car w) (-union (cdr w) v)))))
 
> (-union '(1 2 3) '(2 3 4))
(1 2 3 4)
3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
07.10.2015, 10:47 3
Лучший ответ Сообщение было отмечено Flystyle как решение

Решение

До кучи:

Lisp
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
(defun union* (set1 set2)
  (append set1 (remove-if #'(lambda (x) (member x set1)) set2)))
 
==> union*
 
(union* '(1 2 3) '(2 3 4))
 
==> (1 2 3 4)
 
 
(defun union$ (set1 set2) ;; HomeLisp
  (let ((res set1))
    (iter (for x in set2) (unless (member x set1) (collecting x into res)))
    res))
 
==> union$
 
(union$ '(1 2 3) '(2 3 4))
 
==> (1 2 3 4)
 
(defun union& (set1 set2) ;; HomeLisp
  (setof (append set1 set2)))
 
==> union&
 
(union& '(1 2 3) '(2 3 4))
 
==> (1 2 3 4)
3
Заблокирован
07.10.2015, 11:12  [ТС] 4
Спасибо вам большое!
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
08.10.2015, 01:04 5
Lisp
1
2
3
4
5
6
7
; racket-lang.org
 
(define (foo . lst)
  (remove-duplicates (flatten lst)))
 
(foo '(1 2 3) '(2 3 4 5) '(3 4 5 6))
;'(1 2 3 4 5 6)
3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
08.10.2015, 10:31 6
castorsky, flatten, мне кажется, не совсем здесь нужен.

Добавлено через 27 секунд
А, понял...
1
08.10.2015, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2015, 10:31
Помогаю со студенческими работами здесь

Умножение двух списков
Всем привет. Нужно посимвольно перемножить 2 списка на DrScheme или Huskell. Спасибою

Сортировка двух списков
Есть программа объединения двух списков (defun app (lst1 lst2) (cond ((null lst1) lst2) (t...

Объединения двух и более списков объектов по дате
здравствуйте, столкнулся вот с такой проблемой, есть у меня класс, содержащий два свойства...

Предикат определения множества объединения двух списков
Помогите пожалуйста с заданием: Создать предикат определения множества объединения двух списков.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru