Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.12.2021
Сообщений: 3
1
Common Lisp

Вставить новый элемент после каждого элемента с четным порядковым номером используя функции rplacd или rplaca

07.12.2021, 23:09. Показов 1037. Ответов 5

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток, помогите решить данную задачку:
Написать программу на common lisp.
Вставить новый элемент(любой атом) после каждого элемента с четным порядковым номером используя функции rplacd или rplaca.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2021, 23:09
Ответы с готовыми решениями:

Вставить новый элемент в список после элемента с заданным порядковым номером
Написать программу вставки нового элемента в список за некоторым заданным порядковым номером...

После элемента массива с порядковым номером K вставить новый элемент с нулевым значением
дан массив размера n и целое число k (1<k< n).После элемента массива с порядковым номером K...

После элемента массива с порядковым номером K вставить новый элемент с нулевым значением
напишите пожалуйста программу!!! Дан массив размера N и целое число K(1<=K<=N). После элемента...

Удалить из списка все отрицательные элементы, используя функции RPLACA и RPLACD
Удалить из списка все отрицательные элементы. Используя, спискоразрущающие функции RPLACA и RPLACD

5
Модератор
Эксперт функциональных языков программированияЭксперт Python
36610 / 20336 / 4223
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
08.12.2021, 11:10 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun ins-in (list v &optional (p 0) (sav list))
  (cond ((null list) sav)
        ((evenp p) (ins-in (cdr list) v (+ p 1) sav))
        (t (let ((new  (list v))
                 (next (cdr list)))
                (rplacd list new)
                (rplacd new next)
                (ins-in (cddr list) v (+ p 1) sav)))))
 
(ins-in '(1 2 3 4 5 6) 'a)
==> (1 2 A 3 4 A 5 6 A)
 
(ins-in '(1 2 3 4 5 6 7) 'a)
==> (1 2 A 3 4 A 5 6 A 7)
1
0 / 0 / 0
Регистрация: 07.12.2021
Сообщений: 3
08.12.2021, 12:31  [ТС] 3
Catstail,
Спасибо большое, но возможно ли как то упростить код?
Сделал вот такое задание (Вставить в список новый элемент перед каждым вхождением заданного элемента), написав вот такой код, но никак не могу сделать задание выше:

Lisp
1
2
(defun F (X N L)
   (if L (cons (car L) (F X N (cdr (if (equal (car L) X) (rplacd L (cons N (cdr L))) L))))))
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36610 / 20336 / 4223
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
08.12.2021, 12:51 4
Цитата Сообщение от AndrewCruw Посмотреть сообщение
но возможно ли как то упростить код?
- а что не устраивает?
0
0 / 0 / 0
Регистрация: 07.12.2021
Сообщений: 3
08.12.2021, 12:56  [ТС] 5
Catstail,
В вашем коде присутствует императивное программирование(let), хотелось бы написать на чистом функциональном, первое задание вроде бы получилось
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36610 / 20336 / 4223
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
08.12.2021, 13:08 6
Лучший ответ Сообщение было отмечено AndrewCruw как решение

Решение

AndrewCruw, во-первых: кто сказал, что "let - императивное программирование" (не путаешь ли с set?); во-вторых: о каком ФП тут можно говорить, если используется структуроразрушающая функция?

Lisp
1
2
3
4
5
6
7
8
9
10
(defun ins-in (list v &optional (p 0) (sav list))
  (cond ((null list) sav)
        ((evenp p) (ins-in (cdr list) v (+ p 1) sav))
        (t (rplacd list (cons v (cdr list)))
           (ins-in (cddr list) v (+ p 1) sav))))
 
==> INS-IN
 
(ins-in '(1 2 3 4 5 6) 'a)
==> (1 2 A 3 4 A 5 6 A)
0
08.12.2021, 13:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2021, 13:08
Помогаю со студенческими работами здесь

Перед элементом массива с порядковым номером K вставить новый элемент
1) Дан массив размера N и целое число K (1<K<N).Перед элементом массива с порядковым номером K...

Перед элементом массива с порядковым номером K вставить новый элемент
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K...

Вставить в массив максимальный по модулю элемент после каждого отрицательного элемента с четным индексом
К ней я не могу написать код. Вот условие: Дан массив целых чисел размера n. Вставить в массив...

После каждого элемента с четным числом вставить элемент, содержащий сумму цифр числа
Сформировать список из N целочисленных случайных элементов (N- вводится пользователем ,значения...

Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением
3. Дан массив размера N и целое число K (1 <= K <=N). Перед элементом с порядковым номером K...

Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением
Помогите, пожалуйста составить блок-схемы для выше перечисленных 4х задач. И еще подскажите ,...

Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением.
Помогите, пожалуйста, решить следующие задачи. Очень надо:)))) 1.Для заданного n вычислить ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru