Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Описать функцию, которая для заданного списка lst формирует список-результат
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
dazenita dazenita вне форума
Member
 
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.12.2005
По умолчанию Описать функцию, которая для заданного списка lst формирует список-результат - 13.02.2006, 22:49

Описать функцию, которая для заданного списка lst формирует список-результат путем объединения результата реверсирования lst, результата реверсирования хвоста lst, результата реверсирования хвоста хвоста lst и так далее. Пример : для списка ‘(1 2 3 4 5 6) результатом будет : ‘(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6).

А ВОТ МОЙ ВАРИАНТ:

(DEFUN NEWLIST(X)((NULL X) T)(APPEND(REVERSE(NTHCDR (N X)))))
(NEWLIST 3 '(1 2 3 4))
(rds)
ЛИСП ВЫДАЕТ ОШИБКУ - (N X)
ПОДСКАЖИТЕ ЧТО МОЖНО СДЕЛАТЬ...
А ВОТ ЕЩЕ ОДНА ПЕРЕДЕЛКА ЭТОЙ ЗАДАЧИ:
(DEFUN NEWLIST(X)(COND ((equal X NIL) NIL) ((PLUSP (N))(REVERSE (NTHCDR (N NEWLIST (X)))))))
(NEWLIST '(1 2 3 4))
(rds)
КАК ТУТ РЕШИТЬ ПРОБЛЕМУ С ГЛУБИНОЙ?
Ответить с цитированием
  (#2 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 18.04.2007, 14:41

Код:
(defun liat (w)
  (when w (nconc (reverse w)
                 (liat (cdr w)))))
(liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#3 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 19.04.2007, 03:21

Рекурсию можно "спрятать" в (maplist):
Код:
(defun F (_list)
  (apply 'append
   (maplist 'reverse _list)))
Ответить с цитированием
  (#4 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 19.04.2007, 09:47

Код:
(defun liat (w)
  (mapcon #'reverse w))
(liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#5 (permalink)) Старый
neud neud вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.01.2011
По умолчанию 14.01.2011, 02:47

попалась точно такая же задача,не нашел рабочего кода в теме,прошу если кому не сложно,написать.заранее спасибо
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 14.01.2011, 10:32

lisp Код:
(defun liat (w)
  (when w (nconc (reverse w) (liat (cdr w)))))
> (liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#7 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 14.01.2011, 10:32

lisp Код:
(defun liat (w)
  (cond ((null w) nil)
        ((nconc (reverse w) (liat (cdr w))))))
> (liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#8 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 14.01.2011, 10:34

lisp Код:
(defun liat (w)
  (mapcon #'reverse w))
> (liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#9 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 14.01.2011, 10:36

lisp Код:
(defun liat (w)
  (cond ((null w) nil)
        ((append (reverse w) (liat (cdr w))))))
> (liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
  (#10 (permalink)) Старый
neud neud вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.01.2011
По умолчанию 14.01.2011, 12:03

спасибо огромное
Ответить с цитированием
  (#11 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 06.01.2015, 10:22

lisp Код:
(defun liat (w)
  (loop for d on w nconc (reverse d)))

> (liat '(1 2 3 4 5 6))
(6 5 4 3 2 1 6 5 4 3 2 6 5 4 3 6 5 4 6 5 6)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опишите функцию, которая из исходного списка формирует список Snusmumrik Lisp 2 30.11.2011 19:43
Описать функцию, которая на основе списка чисел формирует спиcок Дарья1207 Lisp 4 14.03.2011 21:59
Описать функцию, которая вставляла бы на заданное место элементы второго списка imported_Юля111 Lisp 2 18.01.2011 17:11
Написать функцию, которая по задонному действительному числу формирует список St.GunneR Lisp 3 10.01.2011 23:54
Написать функцию,которая по двум числам формирует список Marishe Lisp 1 13.10.2010 11:37
Нужно описать функцию, которая выдавала бы элемент списка по заданному номеру Snusmumrik Lisp 0 18.12.2009 22:35
Написать функцию, которая для списка-аргумента формирует список шкаф Lisp 14 13.12.2009 18:22
Описать функцию, которая выдавала бы элемент списка по заданному номеру jany Lisp 2 12.12.2009 00:31
Написать функцию,которая по двум числам формирует список Prototip Lisp 2 11.12.2009 21:12
Описать функцию, которая вычитает из элементов списка заданное число costa Lisp 4 18.11.2006 21:09
Используя функционалы, напишите функцию, которая из данного списка строит список спис Ower Lisp 4 10.05.2005 10:39
Определите функцию которая из списка чисел s создает новый список Astilla Lisp 2 30.01.2005 02:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов