Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
dante666lcf
0 / 0 / 0
Регистрация: 20.02.2018
Сообщений: 6
1

Заменить число на его глубину вложения

20.02.2018, 12:54. Просмотров 777. Ответов 2
Метки нет (Все метки)

2. Напишите функцию, заменяющую Y на число, равное глубине
вложения Y в W, например, Y=a, W=((a b) a (c (a (a d)))) ->
((2 b) 1 (c (3 (4 d)))).

Я пользуюсь HomeLisp, не могли бы написать, я не понимаю.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2018, 12:54
Ответы с готовыми решениями:

Если первое число отрицательно, то его значение заменить его модулем; в противном случае второе число заменить
Доброго времени суток. В университете задали эти задания по информатике (PascalABC). Сама полный...

Указать глубину вложения через параметр
Есть задачка. Запустить батник из командной строки(с %параметрами). Нужно вывести на экран файлы,...

Определить максимальную глубину вложения операторных скобок в программе
"Текст - программа на языке Си. Определить максимальную глубину вложения операторных скобок в этой...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получ
Вобщем,если не сложно,именно саму функцию помочь написать,ибо я просто не могу понять:) ...

Если число кратно 12, то найти произведение его цифр, иначе заменить число нулем
С клавиатуры вводится десять трехзначных чётных чисел. Если число кратно 12, то найти произведение...

2
_sg
4027 / 3786 / 277
Регистрация: 12.05.2012
Сообщений: 2,659
20.02.2018, 17:16 2
Переделать рекурсию по аргументу в рекурсию по значению
1
Catstail
Модератор
24388 / 12328 / 2240
Регистрация: 12.02.2012
Сообщений: 20,026
20.02.2018, 19:58 3
Лучший ответ Сообщение было отмечено dante666lcf как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(defun task (el lst &optional (lv 1))
  (cond ((null lst) nil)
        ((eq el (car lst)) (cons lv (task el (cdr lst) lv)))
        ((listp (car lst)) (cons (task el (car lst) (+ lv 1)) (task el (cdr lst) lv)))
        (t (cons (car lst) (task el (cdr lst) lv))))) 
 
==> TASK
 
(task 'a '((a b) a (c (a (a d)))))
 
==> ((2 B) 1 (C (3 (4 D))))
 
(defun task (el lst &optional (lv 1))
  (mapcar (lambda (x) (cond ((eq el x) lv)
                            ((listp x) (task el x (+ lv 1)))
                            (t x))) lst))
 
==> TASK
 
(task 'a '((a b) a (c (a (a d)))))
 
==> ((2 B) 1 (C (3 (4 D))))
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2018, 19:58

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

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

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


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

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

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