> 1 <

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

yarus88

Members


Статус

4 сообщений

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

#357   2009-05-05 14:04 GMT+3 часа(ов)      
Есть два списка х = (1 2 3 4) и у = (1 2 5 3), нужно из х удалить элементы которых нет в у. должно получится х = (1 2 3).

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#358   2009-05-06 20:32 GMT+3 часа(ов)      
Ну, так например можно
(defun func (x y) (remove-if-not
#'(lambda (z) (find z y)) x))
(func '(1 2 3 4) '(1 2 5 3))

love5an

Members


Статус

25 сообщений

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

#359   2009-05-07 01:16 GMT+3 часа(ов)      
(set-difference list1 (set-difference list1 list2))
правда, порядок не гарантируется

yarus88

Members


Статус

4 сообщений

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

#360   2009-05-10 18:59 GMT+3 часа(ов)      
А можно это как то сделать рекурсивно?

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#361   2009-05-13 13:58 GMT+3 часа(ов)      
(defun g (x y)
(if (eq y nil) nil
(if (equal x (car y)) t
(g x (cdr y)))))
(defun func (x y)
(if (eq x nil) nil
(if (g (car x) y)
(cons (car x) (func (cdr x) y))
(func (cdr x) y))))
(func '(1 2 3 4) '(1 2 5 3))

Ну как-то так не задумываясь.

yarus88

Members


Статус

4 сообщений

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

#363   2009-05-16 17:50 GMT+3 часа(ов)      
Спасибо!
> 1 <


Онлайн :

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




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