|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как зациклить ввод данных
Регистрация: 19.08.2009
Сообщений: 91
|
||
Просмотров: 9618
|
|
||||
Дима_, так ты не стесняйся, пиши...
Глядишь и нас потихоньку научишь\приучишь, а то логику кем-то написанной рекурсии я понимаю, а самому написать ума не хватает
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
рекурсии это конечно хорошо, НО:
1. Забываем про эру ДОС: "1-..." - это моветон! 2. Перестаем игнорировать нули, они в лиспе много стоят! 3. (initget 1 ... <1>: Вообще бред... зы... подправил #5 ![]() Последний раз редактировалось gomer, 27.01.2011 в 21:05. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
initget и getkword - я бессовестно скопировал с Диснея - он просил логику показать - насчет 1... - моветон это отсутствие нормального гуя, а если пишешь на автолиспе - то тут без "мовитонирования" никак - привет от автодеск так сказать.
p.s. по факту целиком, дружелюбный пользователю - по сегодняшним меркам, проект на чистом лисп не напишешь.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Но только не в автолисп - там все, сюдя по всему, на dcl закончилось.
по твоему наверно да ![]() Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 27.01.2011 в 22:34. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Я имею ввиду дин ввод, а в брикскад есть выпадающее экранное меню для опций... чем не гуй
то что не зависит от пользователя, выполняется в любой последовательности не нарушающей логику программы... #3 и #8 возвращает список реверсивный исходному: первое введенное действие оказывается последним в списке... преобразовывать все равно надо, с другой стороны ползователю не надо!!! помнить "коды" шагов и сопоставлять их с описанием... лишнее это, потому что это должна делать программа... это и называется д.и. имхо |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
![]() ![]() ("1" "2" "3" "4") все равно нужно обрабатывать... Дима_, ваш код, возможно, можно еще оптимизировать т.к. f-rec встречается дважды ![]() |
|||
![]() |
|
||||
Цитата:
![]() Конечно бред ![]() initget 1 - лень было пустой ввод обрабатывать ![]() <1> - а это как Дима отмазался "я бессовестно скопировал с solo123" А я врубился ![]() вот Димина функция, только по Евгению Елпанову, через defun Код:
__________________
Почему все вдруг становятся умными, когда уже не надо? Последний раз редактировалось Disney, 28.01.2011 в 06:41. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Вообще-то для выбора направления (1-прямо/2-право/3-лево/4-назад) не надо задавать столько ключевых слов и делать getkword.
Смысл "следующего" направления есть, когда известно предыдущее. Чтобы повернуть вправо, влево и т.д. достаточно запросить одну точку. В зависимости от того, где указана точка, программа должна сообразить, в какую сторону поворачивать. |
|||
![]() |
|
||||
ну... это как правило хорошего тона, "выход" - по пустому вводу.
А на практике, может ему надо 50 раз "прямо" пару раз "право\лево" и только потом "стоп". От сюда вопрос, что удобнее 50 раз нажать Enter\Space\ПКМ, и только в конце ввести "5", или 50 раз вводить "1", и только раз в конце нажать Enter\Space\ПКМ Цитата:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Нее... это не рекурсия
![]() А с непонятно получилось ![]()
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
ты в цикле на каждой итерации вызываеш (split " "), (split "/") и (reverse (cdr (reverse optns))) - результат у них всегда одинаковый - достаточно одного вычисления этих функций.
(append DirectionList (list 1 значение)) - с точки зрения лиспа - конструкция вывернута на изнанку - списки это не массив - и принцип работы с ними иной - по сути ты приconsиваеш ко второму списку (из одного элемента), поочередно все элементы предыдущего списка (опять же на каждой итерации) - короче правильно использовать cons с revers'ом по окончани всех итераций. Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
Конечно, рекурсивный принцип здесь весьма хорош, хоть я и не знаю, где хранятся промежуточные результаты вычисления рекурсивной функции и какую глубину рекурсии позволит мне лисп, тут опять же играет роль ч.ф. (см. выше) Со слоном согласен... исправил одну букву! для этого и мастерил "бубен"... |
|||
![]() |
|
||||
Цитата:
Код:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То Дисней -добавив setq вы координально изменили логику (хоть результат и остался тем-же) - Если добавить обработку в нижнию часть кода (там где закрываются скобки) - в Вашем варианте key всегда будет равен последнему значению (поэтому я и не использую setq).
То Гомер - попробуй почитать определение каррирования - в автолиспе правда его создать невозможно, но встроенные функции с ним есть (+ list и пр).
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 29.01.2011 в 11:26. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
кончно не вычислится - у любой функции вначале вычисляются аргументы (не путать функции со специальными формами (их кто как называет) - это if, cond, and, or...) - где хранится результат - прочти про каррирование
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Да нее, это я просто хотел типа разложить рекурсию, для gomer.
Попробую ещё раз, пользователь вводил: "2" "2" "3" "4" "3" "5" Код:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Табличный ввод данных в ЛИРЕ. | dagget | Лира / Лира-САПР | 20 | 24.12.2019 13:49 |
Ввод данных по умолчанию | swkx | Программирование | 20 | 23.09.2010 14:58 |
VBA. Многократный ввод данных и изменение положения объектов | Markiza-2010 | Программирование | 6 | 28.06.2010 02:30 |
Ввод данных в АВТОЛИСПе | vovkam | LISP | 3 | 19.06.2009 19:41 |
LISP - ввод данных | Torino | LISP | 4 | 02.08.2004 12:33 |