Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Electroflower
Shiningemerald
375 / 108 / 22
Регистрация: 05.01.2012
Сообщений: 667
Записей в блоге: 1
1

Посчитать количество подсписков на верхнем уровне списка

20.01.2012, 10:26. Просмотров 2343. Ответов 18
Метки нет (Все метки)

Ребят, может кто знает как решить, а то я уже запуталась:

1)Напишите рекурсивную функцию, определяющую число подсписков на верхнем уровне списка.
2)Определите предикат SETOF-P, который проверяет является ли список множеством, т.е. входит ли каждый элемент в список лишь один раз.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 10:26
Ответы с готовыми решениями:

Определить количество подсписков, находящихся на указанном уровне заданного списка
Определить количество подсписков, находящихся на указанном уровне для...

Удалить из списка повторяющиеся элементы на верхнем уровне
Определить рекурсивную функцию (SET1 x), которая удаляет из списка х...

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

Информация о количестве подсписков на каждом уровне вложенности
Всем привет. Написать функцию, возвращающую список, содержащий информацию о...

Написать функцию, возвращающую список, содержащий информацию о количестве подсписков на каждом уровне
Написать функцию, возвращающую список, содержащий информацию о количестве...

18
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 11:16 2
Первая задача:
Lisp
1
2
3
4
5
6
7
8
9
10
(defun f (lst)
  (if lst
      (+ (if (atom (car lst)) 0 1)
     (f (cdr lst)))
      0))
 
CL-USER> (f '(1 (2) (3 4)))
2
CL-USER> (f '(1 (2) (3 4 (5))))
2
Вторая задача:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun setof-p (lst)
  (labels ((f (lst tmp)
         (if lst
         (if (member (car lst) tmp :test #'equal)
             nil
             (f (cdr lst) (cons (car lst) tmp)))
         t)))
    (f lst '())))
 
CL-USER> (setof-p '(1 2 3 4 5 1))
NIL
CL-USER> (setof-p '(1 2 3 4 5 6 7))
T
CL-USER> (setof-p '(a b c (d e) (d e)))
NIL
1
Electroflower
Shiningemerald
375 / 108 / 22
Регистрация: 05.01.2012
Сообщений: 667
Записей в блоге: 1
20.01.2012, 11:27  [ТС] 3
ахх , спасибо, спасибо большое!!!!!!
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 11:56 4
Lisp
1
2
3
4
5
6
7
8
9
10
(defun f (l)
           (if (null l) 0
               (if (consp (car l))
                   (1+ (f (cdr l)))
                   (f (cdr l)))))
 
(defun f-p (l)
           (if (null l) t
               (if (member (car l) (cdr l)) ()
                   (f-p (cdr l)))))
1
Electroflower
Shiningemerald
375 / 108 / 22
Регистрация: 05.01.2012
Сообщений: 667
Записей в блоге: 1
20.01.2012, 12:05  [ТС] 5
ааа) спасибо, что ответили мне!
так рада, если что еще спрошу а то я в Lisp полный ноль..
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 12:28 6
bokunopico, скажи мне, зачем эта магия с labels для проверки множества, в чём тут потаённый смысл? не могу понять
0
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 12:31 7
Затупил же.
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 12:37 8
а, понятно, ну бывает)

http://www.youtube.com/watch?v=wAmfLeCqo1w
0
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 12:48 9
Album: A Step To The Great Knowledge
Тонко.
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 13:02 10
и в тоже время сильно
0
Electroflower
Shiningemerald
375 / 108 / 22
Регистрация: 05.01.2012
Сообщений: 667
Записей в блоге: 1
20.01.2012, 13:11  [ТС] 11
мб еще подскажете, если сможете?
1) Используя рекурсию определить функцию DIFR, формирующую разность двух множеств(т.е. удаляющую из первого множества все общие со вторым множеством элементы)
2)Напишите рекурсивную функциюAPPEND1 (x, y), которая добавляет список У к концу списка Х.
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 13:18 12
2.
Lisp
1
2
3
4
(defun f-app (l1 l2)
           (if (null l1) l2
               (cons (car l1)
                     (f-app (cdr l1) l2))))
Добавлено через 4 минуты
1.
Lisp
1
2
3
4
5
6
(defun f-d (m1 m2)
           (if (null m1) ()
               (if (member (car m1) m2)
                   (f-d (cdr m1) m2)
                   (cons (car m1)
                         (f-d (cdr m1) m2)))))
тут небольшая поправочка
1
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 13:24 13
В первом задании изначально получилась симметрическая разность.
И не удалить сообщение теперь.
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 13:26 14
уже исправлено)
0
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 13:39 15
Всё-таки не надо было спешить с поправкой. Хотел отомстить за labels, в итоге унизился сам.
0
Electroflower
Shiningemerald
375 / 108 / 22
Регистрация: 05.01.2012
Сообщений: 667
Записей в блоге: 1
20.01.2012, 13:57  [ТС] 16
спасибо
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 14:12 17
если честно, я исправил до того, как ты сказал))
0
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.01.2012, 14:18 18
Так я про это и говорю, что не надо было мне спешить с поправкой, без меня поправил. Потому и жаловался, что сообщение уже не удалить. В общем, невер майнд.
0
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 697
20.01.2012, 14:27 19
да пустяки это всё) не парься)
0
20.01.2012, 14:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 14:27

Напишите функцию: которая должна производить замены X на Y только на верхнем уровне W
Напишите функцию: которая должна производить замены X на Y только на верхнем...

Рекурсия. Определить функцию, вычисления количества элементов на верхнем уровне в списке х
рекурсия, выполняется только в направлении cdr. и все операции над списками...

Число подсписков списка (использовать рекурсию)
Помогите решить задачу. Вычислить полное число подсписков, входящих в данный...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru