С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1

Преобразовать список во множество

27.02.2016, 17:54. Показов 2329. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, можете пожалуйста решить такое задание?
Определить функцию, которая получает на вход одноуровневый список и преобразует его в множество (удаляет все повторяющиеся элементы).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2016, 17:54
Ответы с готовыми решениями:

Функция работы со списками: преобразовать список во множество
Всем доброго времени суток! Очень прошу подсказать реализацию на языке LISP следующего задания: Определите на языке ЛИСП и проверьте...

Определить функцию "Множество", преобразующую список в множество
Определить функцию МНОЖЕСТВО, преобразующую список в множество в ЛИСП,помогите пожалуйста?

Дан список (a b) (b c) (c d) .). Преобразовать его в ассоциативной список
Дан список ((a b) (b c) (c d) ...). Преобразовать его в ассоциативной список. В качестве ключей взять первые элементы вложенных списков. В...

11
 Аватар для vlisp
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,336
27.02.2016, 18:07
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
можете пожалуйста решить такое задание?
А что мешает найти его самому через поиск?
0
43 / 15 / 2
Регистрация: 27.02.2016
Сообщений: 36
27.02.2016, 18:55
Я бы так написал. Получается новый список без повторяющихся элементов.

Lisp
1
2
3
4
5
(defun преобразовать_список (список)
        (let ((новый_список nil))
            (dolist (элемент список)
                 (setf новый_список (pushnew элемент новый_список)))
         новый_список))
Но я лисп 3 недели назад изучать начал, так что не обессудь.
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
27.02.2016, 19:34
Lisp
1
2
3
4
5
6
(defun -remove-duplicates (w &aux (a (car w)) (d (cdr w)))
  (when w (if (member a d) (-remove-duplicates d)
              (cons a (-remove-duplicates d)))))
 
> (-remove-duplicates '(a a 1 1))
(A 1)
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
27.02.2016, 20:04
Lisp
1
2
3
4
5
6
7
8
9
10
(defun make-set (lst &optional (r nil))
  (cond ((null lst) r)
        ((member (car lst) r) (make-set (cdr lst) r))
        (t (make-set (cdr lst) (cons (car lst) r)))))
 
==> make-set
 
(make-set '(a b c c c a a b))
 
==> (c b a)
2
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
27.02.2016, 20:08
Цитата Сообщение от 4_d4 Посмотреть сообщение
(setf новый_список (pushnew элемент новый_список))
setf лишний. Макрос pushnew сам выполняет присваивание — для этого он, собственно, говоря, и нужен. При этом он возвращает значение — список, полученный после присвоения, и вы его второй раз присваиваете.

Есть и функция adjoin, которая для данного списка и объекта добавляет объект в список, если его там нет. Как пишет CLHS, (pushnew item place), грубо говоря, эквивалентно (setf place (adjoin item place)). То есть pushnew относится к adjoin как push относится к cons.
3
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
27.02.2016, 20:43
Помоему есть встроенное решение
Lisp
1
2
(PRINT (REMOVE-DUPLICATES '(1 2 3 4 32 4 3 3 3 3 ф ф ф ф в в в в)))
* (1 2 32 4 3 Ф В)
Добавлено через 2 минуты
Туповато віглядит почитайте о коллекциях http://lisper.ru/pcl/collections
Lisp
1
2
3
4
(DEFUN REMOVE-DUPLCATES-AGAIN (LST)
       (REMOVE-DUPLICATES LST))
 
(PRINT (REMOVE-DUPLCATES-AGAIN '(1 1 1 1 1 2 2 2 3 3 3 )))
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
27.02.2016, 20:45
Lisp
1
(setf (symbol-function 'remove-duplicates-again) (symbol-functions 'remove-duplicates))
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
27.02.2016, 21:17
Vaderkos, в который раз вопрошаю: чему учат - писать программы или вызывать библиотечные?
0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
27.02.2016, 21:33
Catstail, Именно поэтому сейчас копаюсь в соурсцах sbcl в поисках этой функции
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
27.02.2016, 21:41
Vaderkos, так ее нетрудно и самому реализовать...
0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
27.02.2016, 22:46
Catstail, Согласен, просто интересн как там было сделано)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2016, 22:46
Помогаю со студенческими работами здесь

Вложение словаря в множество - почему нельзя? Альтернативы: список словарей или множество кортежей(списков)
Первое. И словарь, и множество хранят данные на основе хэш-таблиц, как я понял. Не могу понять причину, по которой, однако, нельзя хранить...

Преобразовать множество
Доброе время суток! Делаю пример по алгебре множеств. Не могу преобразовать данное выражение. Сначала использую закон Де Мограна, а затем...

Список: Преобразовать список так, чтобы сначала шли нечетные элементы, а потом четные
Преобразовать список таким образом, чтобы в первой его половине располагались элементы, стоявшие на нечетных позициях, а во второй...

Преобразовать формулу во множество дизъюнктов
Ребята, требуется преобразовать формулу во множество дизъюнктов. Заранее огромное спасибо за помощь! :)

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru