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

Декартовое сложение двух множеств

20.11.2012, 14:03. Показов 3055. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять что за Декартовое сложение и как его реализовать.
дана вот такая задачка.
Реализовать функцию, которая сортирует по возрастанию все числа в множестве , которое мы получаем в результате Декартового сложения двух множеств. Множества в виде списков чисел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2012, 14:03
Ответы с готовыми решениями:

Равенство двух множеств
напишите пожалуйста функцию равенства 2 множеств (в самом коротком варианте)

Реализовать функцию пересечения двух множеств
Реализовать функцию пересечения двух множеств.

Найти пересечение двух множеств чисел
Надо написать программу, которой на входе будут подаваться 2 листа, а на выходе будет 1 лист, содержащий общие элементы этих двух листов. ...

13
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
20.11.2012, 17:04
Lisp
1
2
3
4
5
(defun cartesian-sort (w v)
  (mapcar #'(lambda (u) (sort u #'<)) (mapcan (lambda (e) (mapcar (lambda (a) `(,a ,e)) w)) v)))
 
> (cartesian-sort '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
Lisp
1
2
3
4
5
6
7
8
(defun sort-cartesian (w v) 
 (mapcar #'(lambda (u) (sort u #'<)) (when w (nconc (mi (car w) v) (sort-cartesian (cdr w) v)))))
 
(defun mi (a v) 
  (when v (cons (list a (car v)) (mi a (cdr v))))) 
 
> (sort-cartesian '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
1
2 / 2 / 2
Регистрация: 18.03.2012
Сообщений: 253
23.11.2012, 00:07  [ТС]
Цитата Сообщение от _sg Посмотреть сообщение
Lisp
1
2
3
4
5
(defun cartesian-sort (w v)
  (mapcar #'(lambda (u) (sort u #'<)) (mapcan (lambda (e) (mapcar (lambda (a) `(,a ,e)) w)) v)))
 
> (cartesian-sort '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
сначала выдает ошибку :EVFUN: Не найдена функция MAPCAN
когда меняю mapcan на mapcar и выдает:Apply_: 1 - не является корректным именем функции!
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
23.11.2012, 00:10
значит у Вас не Common Lisp, там есть mapcan

Добавлено через 1 минуту
второй вариант?
0
2 / 2 / 2
Регистрация: 18.03.2012
Сообщений: 253
23.11.2012, 00:13  [ТС]
Цитата Сообщение от _sg Посмотреть сообщение
второй вариант?
EVFUN: Не найдена функция NIL
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
23.11.2012, 00:15
какой Лисп, чем недоволен?

Добавлено через 1 минуту
Цитата:
Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
0
2 / 2 / 2
Регистрация: 18.03.2012
Сообщений: 253
23.11.2012, 00:25  [ТС]
Цитата Сообщение от _sg Посмотреть сообщение
какой Лисп, чем недоволен?

Добавлено через 1 минуту
Цитата:
Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
у меня HomeLisp и я впринцыпе всем доволен , но лисп этот у меня как кость в горле... не все понимаю...после С/С++ с turboProlog я еще мирился а с лисп не очень.

Добавлено через 7 минут
Цитата Сообщение от galaxyblazer Посмотреть сообщение
у меня HomeLisp и я впринцыпе всем доволен , но лисп этот у меня как кость в горле... не все понимаю...после С/С++ с turboProlog я еще мирился а с лисп не очень.

HomeLisp среда в которой работаю... какой диалект - безпонятия...у меня этот язик програмирования на 4 занятия...потом врядли когда столкнусь с ним.
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
23.11.2012, 00:28
я спросил чем недоволен Ваш вариант Лиспа, что пишет, поставьте себе CLISP, если учителя разрешают:
Далее представлено решение для Windows*:

1. Скачать LispBox: http://common-lisp.net/project/lispbox/

2. Разархивировать lispbox-0.7-ccl-1.6-windowsx86.zip и выполнить C:\LispBox\lispbox.bat

или:

1. Скачать Lisp Cabinet http://lispcabinet.sourceforge.net/

2. Выполнить C:\Program Files\LispCabinet\LispCabinet.exe, нажать на клавиатуре клавишу ALT и, не отпуская ее, нажать клавишу X, набрать slime и нажать клавишу ENTER.

далее:

3. Перейти к вводу имени файла (поиску): CTRL-X CTRL-F

4. Ввести имя файла, например double.lisp, и нажать ENTER (если в папке C:\LispBox\ нет файла с таким именем, то он будет создан C:\LispBox\double.lisp)

5. Набрать программу, которая будет сохранена в файле double.lisp:

(defun double (x)
(* x 2))

6. Скомпилировать программу CTRL-C CTRL-K

7. Выйти из сообщения об ошибках Q, исправить ошибки, вернуться к пункту 6.

8. Перейти в REPL (Read Evaluate Print Loop): CTRL-C CTRL-Z

9. После приглашения CL-USER> ввести (double 100) и нажать ENTER

10. Программа выдаст ответ: 200

Дальнейшие шаги: Seibel P. Practical Common Lisp. New York, NY: Apress, 2005. – 499 p. – Mode of access: http://www.gigamonkeys.com/book/, перевод – Mode of access: http://pcl.catap.ru/doku.php?id=pcl, PDF-версия перевода – Mode of access: http://lisper.ru/pcl/pcl.pdf Хювёнен Э., Сеппянен И. Мир Лиспа. В 2-х т. Т.1: Введение в язык Лисп и функциональное программирование. – М.: Мир, 1990. – 439 с. – Mode of access: http://lisp.ru/page.php?id=17

Скачать документацию: Common Lisp HyperSpec. – Mode of access: ftp://ftp.lispworks.com/pub/so... 7-0.tar.gz

или обратитесь за поддержкой напрямую к Catstail, он напишет подходящий для HomeLisp вариант.
0
2 / 2 / 2
Регистрация: 18.03.2012
Сообщений: 253
23.11.2012, 00:32  [ТС]
Ого....крутой мануал... спасибо ...что-то буду думать))
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
23.11.2012, 00:51
Цитата Сообщение от galaxyblazer Посмотреть сообщение
... но лисп этот у меня как кость в горле... не все понимаю...после С/С++ с turboProlog я еще мирился а с лисп не очень.
этот язык Вам понравится, как только начнется что-то получаться

Добавлено через 14 минут
проверьте этот вариант в HomeLisp:
Lisp
1
2
3
4
5
6
7
8
(defun sort-cartesian (w v) 
 (mapcar #'(lambda (u) (sort u #'<)) (when w (append (mi (car w) v) (sort-cartesian (cdr w) v)))))
 
(defun mi (a v) 
  (when v (cons (list a (car v)) (mi a (cdr v))))) 
 
> (sort-cartesian '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
Добавлено через 2 минуты
Lisp
1
2
3
4
5
6
7
8
9
(defun sort-cartesian (w v) 
 (mapcar #'(lambda (u) (sort u #'<)) (when w (append (mi (car w) v) (sort-cartesian (cdr w) v)))))
 
(defun mi (a v) 
  (cond ((null v) nil)
        (t (cons (list a (car v)) (mi a (cdr v))))))
 
> (sort-cartesian '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun sort-cartesian (w v) 
 (mapcar #'(lambda (u) (sort u #'<))
         (cond ((null w) nil)
               (t (append (mi (car w) v) (sort-cartesian (cdr w) v))))))
 
(defun mi (a v) 
  (cond ((null v) nil)
        (t (cons (list a (car v)) (mi a (cdr v))))))
 
> (sort-cartesian '(2 2 2) '(1 1 1))
((1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2) (1 2))
0
2 / 2 / 2
Регистрация: 18.03.2012
Сообщений: 253
23.11.2012, 01:06  [ТС]
1-й:
EVFUN: Не найдена функция NIL
2-й:
EVFUN: Не найдена функция NIL
3-й:
EVFUN: Не найдена функция NIL

все три выдают одну ошибку...
да ладно...фиг с ним...я уже поставил LispBox и там уже все работает.... впарить задание я уже смогу))
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38192 / 21125 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
23.11.2012, 18:12
Цитата Сообщение от galaxyblazer Посмотреть сообщение
EVFUN: Не найдена функция NIL
- это сообщение свидетельствует о неправильной скобочной струкутуре
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
23.11.2012, 18:14
если бы структура была неправильной, то и функции бы не работали
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38192 / 21125 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
24.11.2012, 15:08
В заключение... Не бывает "декартова сложения", бывает декартово произведение. Это множество всех пар (первый элемент - из первого множества, второй - из второго).

В HomeLisp есть функция CART, которая строит декартово произведение:

Lisp
1
2
3
(cart '(1 2 3) '(4 5 6))
 
==> ((1 4) (1 5) (1 6) (2 4) (2 5) (2 6) (3 4) (3 5) (3 6))
Теперь вопрос: как установить отношение порядка на множестве пар? Все примеры, приведенные уважаемым _SG
состоят из одинаковых пар... Что же сортируется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2012, 15:08
Помогаю со студенческими работами здесь

Сложение множеств (set)
В С++ есть встроенный класс Set&lt;тип,минЭл,махЭЛ&gt; Set1; как с помощью него вывести все элементы на экран? #pragma hdrstop #pragma...

Сложение и вычитание множеств
Нужна помощь. Надо создать класс с множеством чисел и реализовать в нём функцию сложения и вычитания, этих самых множеств. Функция сложения...

Конкатенация двух нибблов (сложение двух полубайт в байт)
Как из этих двух полубайт получить полноценный байт со значение &quot;0x3e&quot;? unsigned char first_nibbl = 0x03 unsigned char last_nibbl =...

Декартовое произведение
Множества А, В и С содержат соответственно 2, 3 и 4 элемента. Сколько элементов содержит декартовое произведение В U (А x С), если А\small...

Шаблон класса должен давать возможность вывести все элементы множества на экран, сложение, вычитание, осуществлять пересечение множеств
Есть вот такое задание: 4. Создать шаблон класса Mnogyna. Шаблон класса должен давать возможность вывести все элементы множества на...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru