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

мюЛисп, пролог, ФРЛ. Найти энный кар и кдр, удалить из списка атом, поиск по неориентированному графу

02.05.2012, 18:07. Показов 1135. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пoмoгитe, пoжaлуйcтa, зa бoльшoe чeлoвeчecкoe cпacибo и.. сможем договориться о размерах спасиба
Нa мюЛиcпe рeaлизoвaть функции: 1) вoзврaщaeт энный кaр или кдр из cпиcкa. нa вхoд пocтупaeт нoмeр.
2) вoзврaщaeт cпиcoк, из кoтoрoгo удaлeн зaдaнный aтoм. нa вхoд пocтупaeт aтoм.
a) рeкурcивнo
б) итeрaциoннo
в) c иcпoльзoвaниeм функциoнaлa
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2012, 18:07
Ответы с готовыми решениями:

нахождение энного кара и кдра,поиск по неориентированному графу
Пoмoгитe, пoжaлуйcтa, зa бoльшoe чeлoвeчecкoe cпacибo и.. сможем договориться о размерах спасиба 1) вoзврaщaeт энный кaр или кдр из...

Удалить атом х из простого списка
удалить атом х из простого списка

Удалить атом из списка произвольной структуры
Здравствуйте, выполнил задание рекурсивно, прошу помочь написать еще итерационным способом и с помощью функционала. (defun del (a L) ...


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

Или воспользуйтесь поиском по форуму:
5
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 10
02.05.2012, 22:04  [ТС]
ах да, в первом задании некорректное задание н должно контролироваться.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,685
Записей в блоге: 14
02.05.2012, 22:05
Вот решение первой задачи (мюЛисп)

а. Car, Cdr рекурсивно
----------------------

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defun nCar-r (x n) (cond ((null x) nil)
                          ((= n 1) (car x))
                          (t (nCar-r (cdr x) (- n 1)))))
 
==> nCar-r
 
(nCar-r '(11 22 33 44 55) 4)
 
==> 44
 
(defun nCdr-r (x n) (cond ((null x) nil)
                          ((= n 1) (cdr x))
                          (t (nCdr-r (cdr x) (- n 1)))))
 
==> nCdr-r
 
(nCdr-r '(11 22 33 44 55) 3)
 
==> (44 55)
б. Car, Cdr итерационно
-----------------------

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun nCar-i (x n) (loop ((= n 1) (car x)) (setq x (cdr x)) (setq n (- n 1))))
 
==> nCar-i
 
(defun nCdr-i (x n) (loop ((= n 1) (cdr x)) (setq x (cdr x)) (setq n (- n 1))))
 
==> nCdr-i
 
(nCar-i '(11 22 33 44 55) 4)
 
==> 44
 
(nCdr-i '(11 22 33 44 55) 3)
 
==> (44 55)
7. Универсальное решение (с функционалом)
----------------------------------------------

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun nC-f (f x n) (cond ((null x) nil)
                        ((= n 1) (funcall f x))
                          (t (nC-f f (cdr x) (- n 1)))))
 
 
==> nC-f
 
(nC-f 'Car '(11 22 33 44 55 66) 3)
 
==> 33
 
(nC-f 'Cdr '(11 22 33 44 55 66) 3)
 
==> (44 55 66)

Вопрос по второй задаче: удалять только первое вхождение атома или все вхождения?
Насколько я помню, FRL - это надстройка над Лиспом.
1
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 10
02.05.2012, 22:14  [ТС]
Спасибо большое! сейчас попробую разобраться!

Добавлено через 2 минуты
Все вхождения атома:
вот Пример для второй задачи:
(@DELETE 'A '((A B C) (B C D A A) (C D) (A A)))
((B C) (B C D) (C D) NIL)
Пример для первой:
(@NTHCDR 0 '(А В С)) => (А В С)
(@NTHCDR 2 '(А В С D)) => (С D)
(@NTH 0 '(А В)) => А
(@NTH 1 '((АВ)(ВС)(CD)К)) => (ВС)
Пример для третьей:
(DEFRAMEQ
ПРОЛЕТАРСКАЯ
(ВПЕРЕД ($VALUE (ТАГАНСКАЯ_РАДИАЛЬНАЯ)))
(НАЗАД ($VALUE (ВОЛГОГРАДСКИЙ-ПРОСПЕКТ))) )

(DEFRAMEQ
ТАГАНСКАЯ_РАДИАЛЬНАЯ
(ВПЕРЕД ($VALUE (ПЛОЩАДЬ-НОГИНА)))
(НАЗАД ($VALUE (ПРОЛЕТАРСКАЯ)))
(ПЕРЕСАДКА ($VALUE (MAPKCИСТСКАЯ)(ТАГАНСКАЯ_КОЛЬЦЕВАЯ)))
. . . . .
(WAY 'ПРОЛЕТАРСКАЯ 'ТУРГЕНЕВСКАЯ)
(ПРОЛЕТАРСКАЯ ТАГАНСКАЯ ПЛОЩАДЬ-НОГИНА ТУРГЕНЕВСКАЯ)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,685
Записей в блоге: 14
02.05.2012, 22:17
Вот рекурсивное удаление всех вхождений атома a в список x (на верхнем уровне):

Lisp
1
2
3
4
5
6
7
8
9
(defun del-atom (x a) (cond ((null x) nil)
                              ((eq a (car x)) (del-atom (cdr x) a))
                              (t (cons (car x) (del-atom (cdr x) a)))))
 
==> del-atom
 
(del-atom '(1 2 3 4 5 1 2 3 4 5) 2)
 
==> (1 3 4 5 1 3 4 5)
А если на ВСЕХ уровнях, тогда:

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun del-atom (x a) (cond ((null x) nil)
                            ((atom x) (cond ((eq x a) nil)
                                            (t x)))
                            ((eq a (car x)) (del-atom (cdr x) a))
                            (t (cons (del-atom (car x) a) (del-atom (cdr x) a)))))
 
==> del-atom
 
(del-atom '(1 2 3 4 (5 1 2) ((2 3 4)) 3 4 5) 2)
 
==> (1 3 4 (5 1) ((3 4)) 3 4 5)
1
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 10
02.05.2012, 22:28  [ТС]
Спасибо Вам большое!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru