Жить не можем без проблем! (original) (raw)

определение контуров предметов на видео [Nov. 18th, 2014|04:31 pm]Жить не можем без проблем!
Я дико извиняюсь, могу ошибаться, но три-пять лет назад в ЖЖке пробегал пост от лисповода, в котором товарищ демонстрировал как можно просто без танцев с бубном определить контуры предметов на видео (использовалось послайдовое сравнение на примере работающего вентилятора)Никак не могу нагуглить пост. Кто поможет?)
link 2 comments|post comment
парочка вопросов [Apr. 7th, 2012|12:39 pm]Жить не можем без проблем!
В процессе изучения Лиспа натыкаюсь на некоторые моменты, с которыми пока не могу разобраться.1) sbcl & nunionВведём такой простой код в repl clisp, gcl и sbcl(setf a '(1 2 3))(setf b '(4 5 6))(nunion a b); clisp, gcl => '(1 2 3 4 5 6); sbcl => '(3 2 1 4 5 6)А теперь узнаем значение a: в clisp и gcl получим '(1 2 3 4 5 6), а в sbcl -- '(1 4 5 6).Вопрос: кто неправ? У clisp и gcl результат логичный и ожидаемый, у sbcl -- не пойми что. Если поведение sbcl правильное, то каков смысл в существовании nunion?HyperSpec ситуацию не прояснил.2) gclВозьмём такую простую программку для проверки:(defun test (a) (print a))(test 6)$ gcl -f test.lisp Error: The variable A is unbound.Fast links are on: do (si::use-fast-links nil) for debuggingError signalled by SYSTEM::SET-UP-TOP-LEVEL.Backtrace: PRINTЕсли в начало добавить (si::use-fast-links nil), то запускается. Чего он хочет?
link 8 comments|post comment
group [Feb. 17th, 2012|09:22 am]Жить не можем без проблем!
Доброго времени суток. Нужна была функция, которая группирует список группами по несколько элементов. Получился не совсем красивый велосипед. Никто из сообщества не поделиться более элегантным решением?(define (group lst n) (define (group2 n2 lst2 group grouped) (cond ((<= (length lst2) n2) (append grouped (list lst2))) ((= n2 0) (group2 n lst2 '() (append grouped (list (reverse group))))) (else (group2 (- n2 1) (mcdr lst2) (cons (car lst2) group) grouped)))) (group2 n lst '() '() ))[UPD] Спасибо всем за ответы. В комментариях подали идею сделать более функциональную реализацию. Получилось что-то такое:(define (split n lst) (map (lambda(x)(take n x)) (append (list lst) (reverse (cdr (unfold (lambda(x)(drop n x)) lst empty?) )))))(define (unfold func init pred) (define (unfold2 func init pred res) (let ((x (func init))) (if (pred init) res (unfold2 func x pred (cons x res) )))) (unfold2 func init pred '())) (define (drop n lst) (if (or (= n 0) (empty? lst)) lst (drop (- n 1) (cdr lst))))(define (take n lst) (define (take2 lst n res) (if (or (empty? lst) (= n 0)) (reverse res) (take2 (cdr lst) (- n 1) (cons (car lst) res)))) (take2 lst n '()))
link 8 comments|post comment
скобки в Scheme [Feb. 13th, 2012|11:39 am]Жить не можем без проблем!
Возможно достаточно глупый вопрос, но я не совсем понимаю в какую сторону копать.(define def1 (let ( (i 0) ) (lambda () (set! i (+ i 1)) i))) (define (def2) (let ( (i 0) ) (lambda () (set! i (+ i 1)) i))) Почему одна из функций увеличивает внутреннюю переменную, а другая все время возвращает один и тот же результат. Я понимаю, что дело в скобках, но не совсем ясно как это работает.
link 6 comments|post comment
вопрос новичка [Mar. 2nd, 2011|02:52 pm]Жить не можем без проблем!
В чём принципиальное отличие операторов set, setq и setf?Как я понял, set связывает имя и значение, setq связывает атом и значение, setf связывает ячейку памяти и значение. Не могли бы вы объяснить мне на каком-нибудь ярком примере разницу в работе и применении на практике этих операторов?
link 13 comments|post comment
Точность вычислений - числа с плавающей точкой. Экспонента считается неверно? [Jan. 23rd, 2011|01:29 am]Жить не можем без проблем!
Нашел баг в библиотеке alexandria: субфакториалы (http://en.wikipedia.org/wiki/Subfactorial) читаются неверно, начиная с 11.Формула там верная - (floor (/ (+ 1 (factorial n)) (exp 1)))Но, например, для 11 получается (/ 39916801 2.7182817) => 1.4684571e7, после округления получаем 14684571 вместо 14684570.Ладно, точность (exp 1) маленькая, пишем явно (/ 39916801 2.7182818284590452353602874713526624977572470936999595749669), но все равно получаем 1.4684571e7Python, например, считает точнее:>>> 39916801 / 2.718281828459045235360287471352662497757247093699959574966914684570.445231671Как это побороть (считать с большей точностью)?Компилятор - SBCLP.S. Обнаружил, что экспонента считается неверно.CL-USER> (exp 1)2.7182817А более точное значение - 2.7182818284590452353602874713526624977572470936999595749669..., т.е.должно округляться до 2.7182818P.P.SУже подсказали, что надо писать (exp 1d0), тогда проблемы с точностью решаются.В общем-то, это и будет фиксом для alexandria:subfactorial, но только для чисел до 18 включительно. Другая формула нужна.
link 2 comments|post comment
Почему LISP? [Jan. 13th, 2011|02:05 pm]Жить не можем без проблем!
Как говорил Ворошилов, вопрос к Знатокам (к знатокам LISP-а в данном случае)! Почему таки LISP? Или, если конкретнее, вопроса три: Для каких именно задач LISP подходит больше, чем другие языки? За счёт чего для них он подходит больше? В чём именно выражается его преимущество? Если не в лом, приведите, pls, коротенькие иллюстрации на LISP-е (или ссылочку на них). Заранее благодарен! Исходно данный пост был размещён в сообществе ru_programming, но там Знатоков, способных ответить внятно и по сути, увы, не нашлось :(
link 263 comments|post comment
Code Review Request: Studious Student [Jan. 11th, 2011|04:46 pm]Жить не можем без проблем!
Решил вернуться к изучению Common Lisp, в рамках чего порешал задачки на квалификации Facebook Hacker Cup.Под катом мое решение задачи "Studious Student".Прошу посмотреть код и подсказать, что можно сделать лучше (быстрее, проще).( Read more...Collapse )
link 16 comments|post comment
SICP по-русски. [Sep. 17th, 2010|08:36 am]Жить не можем без проблем!
Сделал перевод третьей лекции SICP, пусть здесь повисит, может кому-нибудь будет интересно.Предыдущие две лекции искать где-то здесь:http://ztarlitz.livejournal.com/32317.html
link 10 comments|post comment
INPUT-STREAM-P, STREAM-ELEMENT-TYPE... vs. CLOSE [Sep. 16th, 2010|10:13 am]Жить не можем без проблем!
Обнаружил, что SBCL после закрытия stream'а теряет все возможности интроспекции на нём: INPUT-STREAM-P, OUTPUT-STREAM-P => NIL, остальное ругается на попытку ввода-вывода с закрытым stream'ом (например, STREAM-ELEMENT-TYPE). Это категорически не кажется правильной вещью. Но прежде, чем бросаться репортить и фиксить, хочу посоветоваться с сообществом: правильно ли я понимаю, что вышеописанное не только «нехорошо», но и non-conforming? Я считаю, что это подтверждается тем, что про OPEN-STREAM-P написано Affected by: Close, а про всю интроспекцию -- Affected by: None.Clozure CL, CLISP, ECL не делают такой бяки. У кого есть под рукой другие реализации -- как с этим делом принято?
link 6 comments|post comment
navigation
[ viewing | most recent entries ] [ go earlier ]