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

Сформировать список из позиций элемента, заданного параметром X, в списке L

07.04.2019, 13:54. Показов 3624. Ответов 3
Метки lisp (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажите, пожалуйста, как правильно описать условие, чтобы в "цикле" пройти все элементы списка, а не только первый, соответствующий заданному параметру.

Сформируйте список из позиций элемента, заданного параметром X, в списке L (нумерация элементов начинается с 1).
Например, при X=4, L=(8 3 4 6 4 1) функция должна вернуть (3 5).
Ввод всех входных данных должен запрашиваться с клавиатуры в процессе работы программы (функции). Не допускается использование: функционалов, а в теле рекурсивной функции - операторов SET и SETQ.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(DEFUN f()
    (princ "Vvedite parametr X: " )
    (setq x(read))
    (princ "Vvedite spisok L: " )
    (setq l(read))
    (POISK x l)
)
(DEFUN POISK (x l &optional (n 1))
    (COND
        ((EQUAL (CAR l) x) (LIST n))
        (t (POISK x (CDR l) (+ n 1)))
    )
)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2019, 13:54
Ответы с готовыми решениями:

Создать список позиций заданного элемента в исходном списке
VISUAL PROLOG 5.2. Вроде все сделал, только возникает ошибка компиляции, не могу понять в чем...

Создать линейный список, и проверить наличие в данном списке заданного элемента
Добрый вечер, помогите пожалуйста решить задачу.создать линейный список и проверить наличие в...

Сформировать линейный список, и проверить его на наличие заданного элемента. Нужны комментарии
Ребятки , можете написать комментарии к этому чуду type List = ^Spisok; Spisok = Record next:...

Список: Написать программу передвижения элемента на n позиций.
Всем привет. Прошу помощи по нескольким заданиям. Тема односвязные списки. 1. Написать программу...

3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
07.04.2019, 22:20 2
Lisp
1
2
3
4
(DEFUN POISK (x l &optional (n 1))
    (COND
        ((EQUAL (CAR l) x) (cons n (poisk x (cdr l) (+ n 1))))
        (t (POISK x (CDR l) (+ n 1)))))
1
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
07.04.2019, 22:35 3
Лучший ответ Сообщение было отмечено Славкалялял как решение

Решение

Lisp
1
2
3
4
5
6
7
(defun poisk (x w &optional (n 1))
  (cond ((null w) nil)
        ((equal (car w) x) (cons n (poisk x (cdr w) (+ n 1))))
        (t (poisk x (cdr w) (+ n 1)))))
 
> (poisk 4 '(8 3 4 6 4 1))
(3 5)
Добавлено через 4 минуты
Lisp
1
2
3
4
5
6
7
8
9
(defun poisk (x w &optional ac (n 1))
  (cond ((null w) (reverse ac))
        (t (poisk x
                  (cdr w)
                  (if (equal (car w) x) (cons n ac) ac)
                  (+ n 1)))))
 
> (poisk 4 '(8 3 4 6 4 1))
(3 5)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
(defun poisk (x w &optional ac (n 1))
  (if w (poisk x
               (cdr w)
               (if (equal (car w) x) (cons n ac) ac)
               (+ n 1))
      (reverse ac)))
 
> (poisk 4 '(8 3 4 6 4 1))
(3 5)
Добавлено через 2 минуты
вариант Common Lisp:
Lisp
1
2
3
4
5
6
(defun poisk (x w)
  (loop for a in w and b upfrom 1
        when (equal a x) collect b))
 
> (poisk 4 '(8 3 4 6 4 1))
(3 5)
Добавлено через 3 минуты
Lisp
1
2
3
4
5
6
(defun poisk (x w)
  (loop for a in w and b upfrom 1
        nconc (when (equal a x) `(,b))))
 
> (poisk 4 '(8 3 4 6 4 1))
(3 5)
2
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,018
11.04.2019, 23:05 4
при чем тут автолисп?
1
11.04.2019, 23:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2019, 23:05
Помогаю со студенческими работами здесь

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

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

Написать подпрограмму поиска заданного элемента в списке
Помогите понять как это сделать. Задан текст состоящий из одной строки и оканчивающийся точкой....

В пользовательском классе List (список) реализовать вставку элемента после заданного элемента
Помогите пожалуйста, мне надо сделать вставку элемента после найденного, а у меня элемент...


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

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