> 1 <

Автор Сообщение

Dremuk

Members


Статус

7 сообщений

Где: Belarus Лунинец
Род занятий:
Возраст: 36

#4650   2011-08-26 14:06 GMT+3 часа(ов)      
Здравствуйте, помогите, пожалуйста решить следующую задачу. Как-то сложно у меня идет с функционалами.

Опpеделите на языке ЛИСП функционал, вставляющий перед каждым элементом списка, обладающим определенным свойством, символ *. Проверьте работу функционала для предикатов:
-неотрицательное число (при вызове используйте лямбда-функцию);
-четное число.

Нужно завтра. Очень надеюсь на помощь.

megamanx

Members


Статус

307 сообщений

Где: Russia
Род занятий:
Возраст:

#4652   2011-08-27 00:08 GMT+3 часа(ов)      
(defun foo (L F)
(cond
((null L) nil)
((funcall F (car L)) (cons '* (cons (car L) (foo (cdr L) F))))
(T (cons (car L) (foo (cdr L) F)))))
(foo '(1 2 -4 3 -5) #'(lambda (x) (>= x 0)))
(foo '(1 2 -4 3 -5) #'(lambda (x) (evenp x)))
;для списка и подсписков
(defun foo2 (L F)
(declare (optimize (speed 3)) (function F) (list L))
(labels ((ret (L F R)
(if (null L) (reverse R)
(let ((carl (car L)))
(cond
((listp carl) (ret (cdr L) F (cons (ret carl F nil) R)))
((funcall F carl) (ret (cdr L) F (append (list carl '*) R)))
(T (ret (cdr L) F (append (cons carl nil) R))))))))
(ret L F nil)))

отредактировал(а) megamanx: 2011-08-27 00:29 GMT+3 часа(ов)
I wish I'd made you angry earlier
> 1 <


Онлайн :

0 пользователь(ей), 15 гость(ей) :




Реклама на сайте: