Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пересечение множеств/ Intersection of sets 
:(
    Опции темы
bek23
Дата 23.4.2012, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



пересечение множеств/ Intersection of sets

Privet vsem, ya v LISPe novichok, yest zadaniye, mojet kto nebud pomojet pojalusta: 
Bilo bi zdorova yesli reshat s DrScheme

пересечение множеств/ Intersection of Sets 
Example: 

(intersection ‘(1 2 3 4) ‘(9 2 5 3)) -> (2 3)
PM MAIL   Вверх
k0rvin
Дата 26.4.2012, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Код

(define (intersection xs ys)
  (for/list ((x (in-list xs))
             #:when (member x ys))
    x))



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Catstail
Дата 8.2.2013, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.1.2013

Репутация: нет
Всего: нет



Чисто функциональное (но далеко не оптимальное!) решение:

Код

(defun inters (lst1 lst2)
 (mapcar 'car
   (remove-if #'(lambda (z) (not (eq (car z) (cadr z))))
     (apply 'append (mapcar #'(lambda (x) (mapcar #'(lambda (y) (list x y)) lst2)) lst1)))))

==> inters

(inters '(1 2 3 4) '(3 4 5 6))

==> (3 4)

(inters '(1 2 a b c) '(b c 2 3))

==> (2 b c)


PM MAIL   Вверх
_sg
Дата 9.2.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



как вариант (Common Lisp):
Код

(defun _intersection (w v)
  (cond ((null w) nil)
        ((member (car w) v) (cons (car w) (_intersection (cdr w) v)))
        ((_intersection (cdr w) v))))
 
> (_intersection '(a s d f g h ) '(q a w s e d r))
(A S D)

Код

(defun _intersection (w v) 
  (loop for a in w when (member a v) collect a))
 
> (_intersection '(a s d f g h ) '(q a w s e d r))
(A S D)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.