|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как изменить одно значение сложного списка ?
Регистрация: 22.01.2010
Сообщений: 311
|
||
Просмотров: 6354
|
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Ёлы-палы, для такой примитивной операции в лиспе не предусмотрено никаких функций ?
Получается, получить значения из моего списка можно просто: (nth num1 (nth num2 lst)), а вернуть обновлённые значения обратно в список можно только с помощью вспомогательных функций ? Не проще тогда совсем удалить элемент (2 a2 b2 c2) из списка, сформировать его заново с другими значениями b2 и c2 и добавить (2 a2 "X" 100) в исходный список ? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А чем обычный subst не катит? Да, код будет сложным - ну так и список не простой...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Алексей, SUBST я проглядел. Пробую сообразить, как его применить. Порядок действий:
1. Запоминаю элемент списка (2 a2 b2 c2) 2. Меняю с помощью SUBST элементы подсписка b2 c2. 3. Меняю опять же с помощью SUBST (2 a2 b2 c2) на (2 a2 "Х" 100) в списке lst. Ты это имел в виду ? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Все послесказанное сугубо ИХМО - я узнаю Ваше недоумение функционалом лиспа - оно класично для недавно перехедших (заглянувших) с классических (императивных) алгоритмических языков (в том числе и меня), если Вы продолжите заниматься лиспом - я уверен на все 100 у Вас отпадет надобность в 99% "лиспонепредусмотренных" операций - просто начнете мыслить по лисповски "мапкарно-рекурсивно".
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Дима_,
программирование на лиспе - нечто вроде хобби для меня, занимаюсь им не очень часто, но с большим удовольствием. Недоумение некоторые лисповские цацки действительно вызывают, но недоумение ни в коем случае не означает недовольство этим языком. А в данном конкретном случае мне вполне хватило двойного применения SUBST. И мыслить по-лисповски не начну - старый уже для этого ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Да я и не настаиваю на применении моего варианта
![]() То есть сперва subst применяется ко вложенному списку, заменяя число? Если так, то это может привести к ошибке. Может оказаться, что в списке два одинаковых числа и заменится не только то, которое нужно. К примеру: (subst "test" 23.4 '(1 23.4 34.6 23.4)). |
||||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Набор функций для работы с i-ми элементами списка
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Угу. Я видимо пропустил, что задано условие уникальности всех элементов списка. Или я не прав? :-)
|
||||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Прав, условие уникальности не упоминалось. Кроме того, сама структура списка списка немного изменилась:
(((num1) a1 b1 c1) ((num2) a2 b2 c2)...) num пришлось загнать в собственный подсписок, чтобы при случайном равенстве с b функция SUBST его не зацепила. a - строковый тип b - вещ. число c - логический тип |
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Цитата:
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рифмоплетство. | Kryaker | Разное | 554 | 14.11.2023 11:59 |
Как изменить единицу измерения расхода воздуха в Aunocad MEP 2009? | samchik | Вертикальные решения на базе AutoCAD | 8 | 06.05.2009 17:18 |
как изменить окраску изометрии | sdndrey | AutoCAD | 1 | 01.06.2004 08:55 |
как изменить окраску 3D модели | sdndrey | AutoCAD | 3 | 31.05.2004 23:55 |
как изменить радиус окружности | sasa | AutoCAD | 11 | 02.12.2003 02:23 |