Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
_KoLyA_
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 11
#1

Подсчитать уровень вложенности списка такого вида ( ​​s ( s ( s ( s ( s ( s ) ) ) - Lisp

13.11.2013, 18:18. Просмотров 729. Ответов 6
Метки нет (Все метки)

Доброго времени суток.
Помогите пожалуйста, не могу эти задания решить!)

1. Подсчитать уровень вложенности списка такого вида ( ​​s ( s ( s ( s ( s ( s )) ) ))).
Дан список из цифр, идущих в произвольном порядке. Написать функцию, которая возвращает сумму первой i последней цифры.
2. Дан список произвольной длины. Написать функцию, которая возвращает первый i последний элементы этого списка в виде двухэлементных списка.
3. Даны два списка парной длины. Написать функцию, которая строит из них список такой структуры: сначала два элемента из первого списка, затем два элемента из второго списка, i так далее .
4. Даны два списка парной длины. Написать функцию, которая строит из них список такой структуры: сначала один элемент из второго списка, затем элемент из первого списка, i так далее .
5. Дан список произвольной длины. Написать функцию, которая возвращает первый, второй, предпоследний i последний элементы этого списка в виде четырехэлементный списка.

Добавлено через 42 минуты
Я видел некоторые задания уже готовые на сайте, но одно из них не решено (это 5 задание), если кто то может решить буду благодарен
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 18:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подсчитать уровень вложенности списка такого вида ( ​​s ( s ( s ( s ( s ( s ) ) ) (Lisp):

Найти максимальный уровень вложенности заданного списка
Помогите написать программу, которая находит максимальный уровень вложенности...

Посчитать суму в 2 и 4 уровнях вложенности списка
Дано список с подсписками: ((1, (2, 4, z, 6), 7, ), 9, 8, ... ). Посчитать суму...

Удаление каждого третьего элемента списка на всех уровнях вложенности
Здравствуйте, уважаемые! Как-то мне бермутно на душе и не могу: Составить...

Заданный список произвольного уровня вложенности разбить на четыре списка
Нужно написать на muLisp программу: Заданный список произвольного уровня...

Организовать массив записей, содержащий информацию о багаже ​​15 пассажиров
Сведения о багаже ​​пассажиров включают в себя количество вещей и общий вес....

Дан файл Bagazh, содержащий сведения о багаже ​​нескольких пассажиров
Багаж пассажира характеризуется количеством вещей и их общим весом. Дано файл...

6
Catstail
Модератор
23525 / 11633 / 2034
Регистрация: 12.02.2012
Сообщений: 18,973
13.11.2013, 18:22 #2
Лучший ответ Сообщение было отмечено как решение

Решение

5)

Lisp
1
2
3
4
5
6
7
8
9
10
(defun task5 (lst)
 (let ((r (reverse lst)))
   (append (list (car lst) (cadr lst)) 
           (list (cadr r) (car r)))))      
 
==> task5
 
(task5 '(1 2 3 4 5 6 7 8))
 
==> (1 2 7 8)
3
route66
492 / 425 / 56
Регистрация: 29.04.2011
Сообщений: 443
22.11.2013, 22:31 #3
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
(5)
(defun FSPL (l)
    (list (car l) (cadr l) (car (last (butlast l))) (car (last l))))
 
(FSPL '(a b c d e f g h i j k))
 
==> (a b j k)
 
(4)
(defun UNITE (l l2)
    (cond
        ((or (null l) (null l2)) nil)
        (t (cons (car l2) (cons (car l) (UNITE (cdr l) (cdr l2)))))))
(UNITE '(1 2 3 4 5 6) '(a b c d e f))
 
==> (a 1 b 2 c 3 d 4 e 5 f 6)
 
 
(3)
(defun UNITE (l l2)
    (cond
        ((or (null l) (null l2)) nil)
        (t (cons (car l)  (cons (cadr l) 
           (cons (car l2) (cons (cadr l2) (UNITE (cddr l) (cddr l2)))))))))
(UNITE '(1 2 3 4 5 6) '(a b c d e f))
 
==> (1 2 a b 3 4 c d 5 6 e f)
 
 
(2.1)
(defun FIRST-LAST (l)
    (list (car l) (car (reverse l))))
 
(FIRST-LAST '(a b c d e f))
 
==> (a f)
 
(2.2)
(defun CARLAST (l)
    (cond
        ((null l) nil)
        (t (cons (list (car l) (car (last l))) (CARLAST (butlast (cdr l)))))))
 
(carlast '(a b c d e f))
 
==> ((a f) (b e) (c d))
 
 
(1)
(defun SUM-FL (l)
    (+ (car l) (car (last l))))
 
(SUM-FL '(1 2 3 4 5))
 
==> 6
 
(1)
(defun COUNT-LVLs (l &optional (n 0))
    (cond
        ((null l) n)    
        (t (COUNT-LVLs (cadr l) (+ n 1)))))
        
(COUNT-LVLs '(s ( s ( s ( s ( s ( s )))))))
 
==> 6
2
Belkins18
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 4
28.11.2013, 13:22 #4
а как заменить s на b например, для каждого уровня вложенности?
( ​​s ( s ( s ( s ( s ( s ) ) ) ---> ( ​​b ( b ( b ( b ( b ( b ) ) )
0
route66
492 / 425 / 56
Регистрация: 29.04.2011
Сообщений: 443
28.11.2013, 13:45 #5
Цитата Сообщение от Belkins18 Посмотреть сообщение
а как заменить s на b например, для каждого уровня вложенности?
( ​​s ( s ( s ( s ( s ( s ) ) ) ---> ( ​​b ( b ( b ( b ( b ( b ) ) )

Lisp
1
2
3
4
5
6
7
8
9
(defun TASK (l a)
    (cond
        ((null l) nil)
        ((atom (car l)) (cons a (TASK (cdr l) a)))
        (t (cons (TASK (car l) a) (TASK (cdr l) a)))))
 
(TASK '(s ( s ( s ( s ( s ( s ) ) )))) 'b)
 
==> (b (b (b (b (b (b))))))
1
Belkins18
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 4
28.11.2013, 13:59 #6
спасибо
0
Catstail
Модератор
23525 / 11633 / 2034
Регистрация: 12.02.2012
Сообщений: 18,973
28.11.2013, 14:06 #7
Lisp
1
2
3
4
5
6
7
8
9
(defun заменить (список что-менять на-что-менять)
  (mapcar #'(lambda (x) (if (equal что-менять x) на-что-менять
                            (if (listp x) (заменить x что-менять на-что-менять) x))) список))
 
==> заменить
 
(заменить '(s (s (s (s (s))))) 's 'ку-ку)
 
==> (ку-ку (ку-ку (ку-ку (ку-ку (ку-ку)))))
0
28.11.2013, 14:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 14:06
Привет! Вот еще темы с решениями:

Вычислить сумму первых элементов, находящихся на нечетных местах и ​​их количество
дано целочисленный одномерный массив А, состоящий из 14 элементов. Вычислить и...

Найти подмножество B мощности k такую​​, модуль суммы элементов которой минимальный
В числовой множеству A мощности n найти подмножество B мощности k такую​​,...

Осуществить сдвиг элементов массива в ​​направлении младших индексов на заданное количество позиций
Осуществить сдвиг элементов массива Y (m) в ​​направлении младших индексов на...

Составить программу, которая выводит полную запись десятичного числа 42 * ​​4 *, в которой пропущены две цифры
Составить программу, которая выводит полную запись десятичного числа 42 * ​​4...


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

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

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