|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Lisp. Вставка в список.
Регистрация: 23.07.2009
Сообщений: 29
|
||
Просмотров: 8923
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Уверен, что Вы пытаетесь использовать список как массив - это стандартная "мания" "приходящих в лисп". Посмотрите как решаются подобные Вышей исходной задаче - вряд-ли такую операцию встретите.
p.s. и не спроста такой "простой" операции в стандартном наборе команд нет. Чтобы писать на лиспе, надо научится понимать его логику.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
аналогично с remove-i Последний раз редактировалось gomer, 26.12.2010 в 19:00. |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Цитата:
Первая функция в некоторых случаях может удалять дублирующие элементы. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Медленней чем что?
В примечаниях опубликованных лиспов есть ссылка на соответствующую тему на theswamp.org. Там много хороших алгоритмов + для всех есть Benchmark'и.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 23.07.2009
Сообщений: 29
|
Переделал своего сортировочного монстра посредством vl-sort-i, но главое тут в lambda функции. Получилось на порядок красивее. Поясните пожалуйста если скажем тест-функция выдаст все nil, то получиться обратный список иначе говоря все элементы выдавшие тест функции nil сдвигаются вверх?
Последний раз редактировалось back1981, 27.12.2010 в 18:02. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
я о том, что mapcar перебирает весь список, что в данном случае не нужно... Хотя вариант в #6 может работать быстрее #2...
самый быстрый вариант имхо, как в счетах... отсчитали нужное, удалили или вставили... отсчитали обратно... хвост списка не обрабатывается... |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Цитата:
А чтобы получить реверсированный список, всегда можно изменить тест-функцию, чтобы она возвращала противоположный результат (> заменить на <=, = заменить на /=, применить not к последнему выполняемому выражению лямбды-функции и т.д.). Если по какой-либо причине это затруднительно, можно реверсировать полученный список. Похоже, что vl-sort(-i) не циклится при некорректной тест-функции (например, как в известной игре камень>ножницы>бумага>камень): (vl-sort '(0 1 2 3) '/=) возвращает (3 2 1 0); (vl-sort '(0 1 2 3) '=) возвращает (0 1 2 3). Последний результат сортировки не логичен с точки зрения определения vl-sort. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
lisp помогите обработать список | Apelsinov | LISP | 33 | 16.07.2021 15:56 |
Lisp показывает ошибку Плохо сформированный список на входе | BBLainer | LISP | 20 | 27.04.2010 18:40 |
Lisp: Список элементов в слоях | ALFMario | LISP | 4 | 29.04.2008 17:26 |
Помощь по Лире | Серега М | Лира / Лира-САПР | 52 | 28.05.2007 02:47 |