| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Ой, вот именно не дают... Кажется, мой мозг отбился от рук... В последнее время одни только идеи... например dcl библиотека блоков с деревом по xml-файлу, наподобие того, что ты сделал здесь
я то надеялся обойтись одной простой рекурсивной функцией... но не тут-то было... |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Друзья мои я сейчас занят "люто" (большой проект делаю) - заскавиваю на форум чтоб от писанины отдохнуть - где то рядом Дисней еще про прямоугольники спрашивали - будет время обязательно отпишусь - здесь "конечно" я бы сделал рекурсией в один проход
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Тут главное понять не как, а для чего. Про стили программироваия неплохо расписанно в "Структура и интерпритация компьютерных программ", ну а в целом - почитайте про функциональное программирование.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Просто я никогда в книгах по visualLisp не встречал как работает конструкция
Код:
Код:
Я бы разбивал список так. Код:
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Лямбда - функция высшего порядка от произвольного числа аргументов возвращающая новую (пользовательскую) функцию - где первый аргумент - это список имен аргументов будующей функции, все остальные - тело функции. В отличие от большинства остальных функций - функция запускается "сразу" - до вычисления вложенных аргументов (т.н. специальная форма - так-же как и if, and, or,cond...). По сути defun и setq это обертка т.н. "синтетический сахар" от lambda (в defun добавляется параметр имени функции, в setq - область определения лямбды "расширяется" на все окружение).
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
1) Спасибо за разъяснения - уже становится понятно, что это настоящий лисп, а то что я писал до этого, это обычный старый паскале-подобный код написанный на лиспе. Применять лисп как раз и нужно, через вот эти lambda т.к. сложные функциональные задачи проще и понятнее расписать через настоящий лисп, нежели пытаться превратить это все в циклы.
Автодеск то забил, но и у нас есть возможность забить на автодеск. Интерпретатор в бриксе например работает ощутимо быстрее. Но это все равно не то чего хотелось бы. То что автодеск забил, вообще никого не волнует, хочется вооружиться нормальными фраймворками, получать данные о примитивах АВТОКАДА (если вообще автокада, может быть ревитиа, инвентора и т.д.) через API, а уже с данными о примитивах работать на настоящем функциональном лиспе (я где то видел проект где народ пишет компилятор лиспа в MSIL - вот это сила) т.е. я хочу писать лисп-код для "умной" работы с данными для того чтобы получить конечный результат. А вот получение введенных данных и вывод конечного результата, это удел C# .NET API, для того они и развивались долгие годы в бизнесс-приложениях и добились в этом отличных результатов. Существуют и обычные интерпретаторы под JAVA видимо скоро появятся и для C#, но я сомневаюсь что они будут сильно быстрее чем нынешний лисп в автокаде, а вот компилятор LISP - MSIL - это мне кажется будет серьезный рост производительности, а также кросплатформенность соответствующая самым современным требованиям к ПО. Но саму идею о том что: "Лисп-программист не разбивает алгоритм на отдельные элементарные шаги, не использует циклы, ветвления, присвоения значений переменным, а строит функцию, решающую поставленную задачу. При этом структура функции почти дословно соответствует математической формулировке решаемой задачи. Подобная методология сейчас называется функциональным программированием. Лисп – первый функциональный язык программирования и, вероятно, первый язык, который явно приветствовал использование рекурсии." ее нельзя убить, пока останутся умные люди на земле, она будет жить в веках. Эта задачка с вагонами не особо сложна, но дает отличную возможность сравнить два стиля императивный и функциональный, попробую разобраться с твоим кодом (Дима_ ) и применять подобный подход, в своем проекте, надо же когда-нибудь учиться прекрасному. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Цитата:
gomer, там (в #1440) кстати ошибка. В конце, вместо lst_out должно быть (append lst_out (list lst_current)), а то конец списка не возвращается. Это я от спешки не досмотрел. А вот и рекурсия, правда не очень-то изящно Код:
__________________
cadtools |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Цитата:
Уж поверьте мне, я наверняка больше всех на форуме и программ и функций написал. И "лямбды" использую (когда надо), и переменные, и (ужас!) циклы и ветвления. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
При всем уважении Вы здесь загнули. Я буквально неделю назад "смалодушничал" и ввел в f# переменную, а потом замучился потоки синхронизировать - вовремя одумался и убрал ее от греха подальше. Посмотрите на 4 .Net - там и динамическую типизацию ввели, да и в общем все что добавили - корнями упирается в 52 год. Я не сомневаюсь что это действительно вопрос времени т.к. автоматическая оптимизация на порядок отличается в фунуциональных программах, а в рукопашную далеко не уедешь. На наш век конечно "дураков хватит", но ИХМО путь тупиковый.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Дима_, а при чем тут f# и .Net?
Тут идеи "которые будут жить в веках" про Лисп-программистов. Причем в конкретной реализации - Автолисп (слабенький, конечно, диалект). Вот бы вместо идей предъявить полезную прикладную программу (не этюд). Например, как чрезвычайно популярные PlTools или Прокат от Василия Кондрата. Они же ужасно, с точки зрения "вечной идеи" написаны, но нужны людям. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
ShaggyDoc, а где Ваш "ответ Чемберлену" (тоже ведь рекурсия )
Вот пока мой... Вроде бы стало все на свои места... но мне все равно не нравится... Код:
Цитата:
Вот вам еще: расставить вагоны по боксам для ремонта в зависимости от типа вагона... имеем два списка: состав и боксы... Если в программе нет кнопачек то она не перестает быть программой по определению... важен именно алгоритм... а язык и способ реализации вторичны... зы Насчет pltools не скажу, но 'прокат' потому и развивается "никак", что написан на "бейсике". Последний раз редактировалось gomer, 25.04.2011 в 02:11. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Цитата:
Боксы и вагоны - это наподобие "ханойских башен" - практически никому не интересны. А прокат - то, что всем надо. Да еще в 3D. Никакого "абстракционизьма", сплошной "реализьм". |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
ИХМО накрутили Вы коллега здесь лишнего - простое правило - если алгоритм простой, то и рекурсия должна выглядеть просто (без надобности я стараюсь не использовать list и append внутри рекурсии - т.к. в итоге это только код усложняет):
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Дима_, я не спорю, просто так как у Вас у меня пока не получается .
__________________
cadtools |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Насчет башен согласен, а насчет не интересно - увы, хотя каждому свое: строителям - прокат, машиностроителям - болты, железнодорожникам - цистерны и вагоны Дима_, это как раз то, что я хотел... Код:
Последний раз редактировалось gomer, 25.04.2011 в 12:05. |
|||
|
||||
Сообщений: n/a
|
/ Перенесено из http://forum.dwg.ru/showthread.php?t=7411 / kpblc /
Почему лисп рисует объект по введённым параметрам на запросы командной строки для предпоследних введённых параметров? Последний раз редактировалось Кулик Алексей aka kpblc, 06.05.2011 в 23:29. |
|||
|
||||
Сообщений: n/a
|
Нет
Другое уже. Код:
Особо не критикуйте.Пишу код как могу-с книжкой в руках. В общем проблема в следующем:загружаю активное окно редактора лиспа,перехожу в автокад,из буфера в командую строку вставляю razvertka,дальше по просьбам ком.строки-первый результат нулевой (пусто).В ком.строке какаято ошибка.Повторный ввод-отрисовывает развёртку по ппервым данным. p.s.Код недоделанный. Последний раз редактировалось Владимир Егорьев, 06.05.2011 в 22:55. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |