Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
433 / 298 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
1

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

15.12.2013, 12:39. Просмотров 1187. Ответов 1
Метки нет (Все метки)


Написать функцию, возвращающую список, содержащий информацию о количестве подсписков на каждом уровне вложенности: например ((0 1) (1 0) (уровень количество))
Проблема в том, что нужно использовать только примитивы языка: – CAR, CDR,CONS, ATOM, EQ, list, Cond, or, not, and,
Функция считающая количество списков на 0 уровне в списке.
Lisp
1
2
3
4
5
(defun count (lst)
  (cond
    ((null lst) 0)
    ((atom (car lst)) (count (cdr lst)))
    (t (+ 1 (count (cdr lst))))))
А это что вышло. но не работает
Lisp
1
2
3
4
5
6
7
(defun level (lst)
  (cond 
    ((null lst) '(0 0))
    ((and (> a 0) (atom (car lst))) (level a (cdr lst)))
    ((> a 0) (append (+ (level (- a 1) (car lst)) (level a (cdr lst)))))
    (t (append '(0) (count lst)))
))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2013, 12:39
Ответы с готовыми решениями:

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

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

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

Написать функцию, выводящую список минимальных элементов подсписков. (HomeLisp)
Буду очень признателен.

__________________
Помогаю в написании студенческих работ здесь.
1
Модератор
Эксперт Python
28417 / 15309 / 3018
Регистрация: 12.02.2012
Сообщений: 25,070
Записей в блоге: 4
15.12.2013, 13:37 2
Вспомогательная функция, которая считает число списков на заданном уровне:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(defun level-n (lst n)
  (cond ((atom lst) 0)
        ((null lst) 0)
        ((zerop n) 
         (cond ((listp (car lst)) (+ 1 (level-n (cdr lst) 0)))
               (t (level-n (cdr lst) 0))))
        (t (+ (level-n (car lst) (- n 1)) (level-n (cdr lst) n)))))
 
==> level-n
 
(level-n '((1 2) (3 4) 5 6) 2)
 
==> 0
 
(level-n '((1 2) (3 4) 5 6) 1)
 
==> 0
 
(level-n '((1 2) (3 4) 5 6) 0)
 
==> 2
(level-n '((1 2) ((3 4)) (((5))) 6) 2)
 
==> 1
 
(level-n '((1 2) ((3 4)) (((5))) 6) 1)
 
==> 2
 
(level-n '((1 2) ((3 4)) (((5))) 6) 0)
 
==> 3
Решение задачи:

Lisp
1
2
3
4
5
6
7
8
9
(defun task (lst &optional (k 0))
  (cond ((zerop (level-n lst k)) nil)
        (t (cons (list k (level-n lst k)) (task lst (+ k 1)))))) 
 
==> task
 
(task '((1 2) ((3 4)) (((5))) 6))
 
==> ((0 3) (1 2) (2 1))
Уровни нумеруются с нуля.
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2013, 13:37

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

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

Написать функцию, принимающую функцию l, три списка и возвращающую список со значениями, полученными применением функции l к тройкам исходных значений
Дорогие программисты,помогите пожалуйста с этим хаскеллом!Никак не могу решить эту задачу!!Одну я...

Написать функцию, возвращающую список из n копий заданного атома x
В lisp'e совсем плох. Надо решить три задачки. Написать функцию: 1.Возвращающую список из n копий...

Написать функцию, возвращающую в случае первого четного элемента исходный список, в котором первые три числа возведены в квадрат
Помогите пожалуйста подправить код и решить рекурсию. Задание: Дан список чисел. Написать...


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

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

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