Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 5

Clojure Определять атом списка, предшествующий заданному

23.05.2014, 15:01. Показов 2502. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане!
Только-только начал осваивать lisp.
В общем следующее задание: Определять атом списка, предшествующий заданному (через цикл do).
Через рекурсию реализовать проблем не возникло, вот код:
Lisp
1
2
3
4
(defun name (x list)
(cond ((null list) nil)
((eql (cadr list) x)(car list))
(t (name x (cdr list)))))
Но вот с циклом - беда, не могу никак понять за что цеплять, чтобы при совпадении цикл завершался. Пока все мои попытки уводят в бесконечный цикл.

Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2014, 15:01
Ответы с готовыми решениями:

Clojure Многоуровневые списки: вернуть n-ый атом из списка s
Определите функцию (f s n), где s - список, n - число. Функция должна возвращать n-ый атом из списка s. Список s может быть...

Clojure Разбить строковый атом
Как в HomeLisp разбить строковый атом на отдельные составляющие? "Hello, world!" ==> "H" "e" "l"...

Clojure Программа, переводящая символьный атом из N-ричной системы счисления
Выручайте) ...

25
Заблокирован
24.05.2014, 16:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от _sg Посмотреть сообщение
(defun previous-z (z w &aux (p (position z w)))
* (when (and p (plusp p)) (nth (1- p) w)))
Здесь 1 лишняя проверка...
Lisp
1
2
(defun previous-z (z w &aux (p (position z w)))
  (if (plusp p) (nth (1- p) w)))
Вот так будет проще, но в homelisp работать не будет, ибо он не знает функцию plusp.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38225 / 21157 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
24.05.2014, 17:31
Цитата Сообщение от ur_naz Посмотреть сообщение
ибо он не знает функцию plusp
- это не проблема:

Lisp
1
(defun plusp! (x) (And (not (zerop x)) (not (minusp x))))
1
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
24.05.2014, 17:44
Цитата Сообщение от ur_naz Посмотреть сообщение
Здесь 1 лишняя проверка...
Код Lisp
1
2
(defun previous-z (z w &aux (p (position z w)))
* (if (plusp p) (nth (1- p) w)))
Вот так будет проще, но в homelisp работать не будет, ибо он не знает функцию plusp.
нелишняя:
Lisp
1
2
3
> (previous-z 4 '(1 2 3))
PLUSP: NIL is not a REAL
   [Condition of type SIMPLE-TYPE-ERROR]
было:
Lisp
1
2
3
4
5
(defun previous-z (z w &aux (p (position z w)))
  (when (and p (plusp p)) (nth (1- p) w)))
 
> (previous-z 4 '(1 2 3))
NIL
HomeLisp:
Lisp
1
2
3
4
5
6
7
8
9
(defun previous-z (z w &aux (p (position z w)))
  (when (and p (> p 0)) (nth (1- p) w)))
 
> (previous-z 4 '(1 2 3))
NIL
> (previous-z 1 '(1 2 3))
NIL
> (previous-z 2 '(1 2 3))
1
2
Заблокирован
25.05.2014, 13:07
Цитата Сообщение от Catstail;6220669"[quote="Catstail Посмотреть сообщение
(defun plusp! (x) (And (not (zerop x)) (not (minusp x))))
Скорей так: проверяем аргумент на "число", проверяем знак:
Lisp
1
(defun plusp (x) (and (numberp x)(< 0 x)))
Цитата Сообщение от _sg Посмотреть сообщение
нелишняя:
Ну, да, в homelisp (< 0 nil) возвратит ошибку, в автолиспе нет. Учитывая, что plusp - нештатная функция, то я остаюсь при своем мнении хотя конечно да, plusp работает только с числами в cl
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38225 / 21157 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
25.05.2014, 13:16
Я в последнее ядро включил plusp.
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
25.05.2014, 15:53
Цитата Сообщение от ur_naz Посмотреть сообщение
Скорей так: проверяем аргумент на "число", проверяем знак:
Скорее, надо проверить неравенство (> x 0). А numberp не надо проверять: лучше, когда (plusp #\a) генерирует ошибку, а не nil.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2014, 15:53

Сессия!!!Определять атом списка, пред-шествующий заданному атому
1. Разработать рекурсивный вариант программы для решения предложенной ниже задачи. 2. Разработать вариант программы с использовани-ем...

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

Clojure Написать функцию, для замены элементов списка y на соответствующие элементы списка x в списке w
Здравствуйте. Помогите написать функцию, осуществляющую замену элементов списка y на соответствующие элементы списка x в списке w....

Удалить атом х из простого списка
удалить атом х из простого списка

Возвратить первый атом списка
Помогите написать функцию которая находит первый атом в списке с подсписками ((((((...) v) w) x) y) z). Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru