Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Написать функцию UNION, которая вычисляет объединение двух множеств
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 25.12.2007, 11:17

"...организовать все это, только с помощью функционалов..." - что именно, можно ли изложить задачу?

"...можно использовать "nconc", только какой для него фильтр подобрать..."
Цитата из XLISP Help/Destructive List Functions:
destructively concatenate lists
(nconc <list>...)
<list> lists to concatenate
returns the result of concatenating the lists
- какой-либо фильтр не упоминается - о чем собственно идет речь?

Хювёнен-Сеппянен "Мир Лиспа" т.1
3.4 Функции более высокого порядка
Функционал имеет функциональный аргумент
<...>
Основываясь на едином представлении данных и программ, функции в качестве аргумента можно указать и функцию, или, другими словами, определение функции, либо представляющий функцию символ. Аргумент, значением которого является функция, называют в функциональном программировании функциональным аргументом (functional argument), а функцию, имеющую функциональный аргумент - функционалом (functional). (выделение мое. - VH)
<...>
Ответить с цитированием
  (#17 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 25.12.2007, 11:17

"...организовать все это, только с помощью функционалов..." - что именно, можно ли изложить задачу?

"...можно использовать "nconc", только какой для него фильтр подобрать..."
Цитата из XLISP Help/Destructive List Functions:
destructively concatenate lists
(nconc <list>...)
<list> lists to concatenate
returns the result of concatenating the lists
- какой-либо фильтр не упоминается - о чем собственно идет речь?

Хювёнен-Сеппянен "Мир Лиспа" т.1
3.4 Функции более высокого порядка
Функционал имеет функциональный аргумент
<...>
Основываясь на едином представлении данных и программ, функции в качестве аргумента можно указать и функцию, или, другими словами, определение функции, либо представляющий функцию символ. Аргумент, значением которого является функция, называют в функциональном программировании функциональным аргументом (functional argument), а функцию, имеющую функциональный аргумент - функционалом (functional). (выделение мое. - VH)
<...>
Ответить с цитированием
  (#18 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 25.12.2007, 11:17

"...организовать все это, только с помощью функционалов..." - что именно, можно ли изложить задачу?

"...можно использовать "nconc", только какой для него фильтр подобрать..."
Цитата из XLISP Help/Destructive List Functions:
destructively concatenate lists
(nconc <list>...)
<list> lists to concatenate
returns the result of concatenating the lists
- какой-либо фильтр не упоминается - о чем собственно идет речь?

Хювёнен-Сеппянен "Мир Лиспа" т.1
3.4 Функции более высокого порядка
Функционал имеет функциональный аргумент
<...>
Основываясь на едином представлении данных и программ, функции в качестве аргумента можно указать и функцию, или, другими словами, определение функции, либо представляющий функцию символ. Аргумент, значением которого является функция, называют в функциональном программировании функциональным аргументом (functional argument), а функцию, имеющую функциональный аргумент - функционалом (functional). (выделение мое. - VH)
<...>
Ответить с цитированием
  (#19 (permalink)) Старый
D@iver D@iver вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2007
По умолчанию 26.12.2007, 06:06

Вобщем что-то типа вот этого, только нуна еще сделать так, чтобы из второго списка удалялись те атомы, которые есть в первом!!!

Код:
(setq First '(a s d))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (if (eq ? x) nil (list x))) Second)))
Должно выйти -> (a s d f)

Возможно использование cond
Ток пока не придумал как...Возможно эти наброски помогут:

Код:
(setq First '(d c))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (cond ((null First) (list x))
                                 (if (eq (car First) x) '(t) nil)
                                 (t (if (eq (car First) x) nil (list x))))) 
Second)))

Все нет времени намана за все сесть и сделать, но принцип таков...
Заранее спс...
Ответить с цитированием
  (#20 (permalink)) Старый
D@iver D@iver вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2007
По умолчанию 26.12.2007, 06:06

Вобщем что-то типа вот этого, только нуна еще сделать так, чтобы из второго списка удалялись те атомы, которые есть в первом!!!

Код:
(setq First '(a s d))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (if (eq ? x) nil (list x))) Second)))
Должно выйти -> (a s d f)

Возможно использование cond
Ток пока не придумал как...Возможно эти наброски помогут:

Код:
(setq First '(d c))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (cond ((null First) (list x))
                                 (if (eq (car First) x) '(t) nil)
                                 (t (if (eq (car First) x) nil (list x))))) 
Second)))

Все нет времени намана за все сесть и сделать, но принцип таков...
Заранее спс...
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
D@iver D@iver вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2007
По умолчанию 26.12.2007, 06:06

Вобщем что-то типа вот этого, только нуна еще сделать так, чтобы из второго списка удалялись те атомы, которые есть в первом!!!

Код:
(setq First '(a s d))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (if (eq ? x) nil (list x))) Second)))
Должно выйти -> (a s d f)

Возможно использование cond
Ток пока не придумал как...Возможно эти наброски помогут:

Код:
(setq First '(d c))
(setq Second '(a f s))
(setq r (nconc First (mapcan #'(lambda (x) (cond ((null First) (list x))
                                 (if (eq (car First) x) '(t) nil)
                                 (t (if (eq (car First) x) nil (list x))))) 
Second)))

Все нет времени намана за все сесть и сделать, но принцип таков...
Заранее спс...
Ответить с цитированием
  (#22 (permalink)) Старый
D@iver D@iver вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2007
Red face 06.01.2008, 01:56

Сам отвечаю на свой же вопрос.

На тот случай, если кому-нибудь понадобится!!!

Сначала пишем функцию вхождения
Код:
(defun contain (x lst) 
  (cond ((null lst) nil)
          ((eq x (car lst)) t)
          (t (contain x (cdr lst)))
  )
)
А это собственно и есть объединение с помощью функционалов!!!

Код:
(defun Union_list(lst1 lst2)
  (nconc 
  (mapcan #'(lambda (x) (if (contain x lst2) nil (list x))) lst1)
  lst2)
)
Ответить с цитированием
  (#23 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 06.01.2008, 11:08

Код:
(defun my-union (set1 set2)
  (reduce (lambda (rest x) (adjoin x rest))
          set1 :initial-value set2))
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать функцию,которая выполняет пересечение двух множеств Пальмира Lisp 8 28.12.2011 17:35
Определите функцию, которая из двух списков одинаковой длины строит список Masha11 Lisp 2 13.01.2011 15:11
Определите функцию same, которая для двух списков находит первый Masha11 Lisp 4 13.01.2011 13:33
Определите функцию (f s), которая вычисляет список mario[x] Lisp 4 09.12.2010 15:37
Написать функцию проверяющую равенство двух множеств &quot;программист&quot; Lisp 1 29.07.2009 13:15
Написать рекурсивную функцию,которая вычисляет сумму всех чисел kugur Lisp 1 22.07.2009 18:50
Определите функцию (f a b c), которая вычисляет список корней квадратного уравнения назарово Lisp 3 01.02.2008 10:06
Написать функцию UNION, которая вычисляет объединение двух множеств Serg13 Lisp 3 13.09.2007 14:22
Написать программу, проверяющую, является ли первое из двух множеств подмножеством Zetka Lisp 4 29.05.2007 01:16
Написать функцию UNION,которая вычисляет объединение множеств compadre_sai Lisp 1 24.05.2007 02:11
Как составить функцию, которая вычисляет произведение элементов Anonymous Вопросы начинающих программистов 1 25.05.2004 16:40
Определите функцию которая вычисляет список корней квадратного уравнения Anonymous Lisp 0 05.05.2003 11:32



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов