Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Подсписки


Автор: Takushika 1.11.2011, 17:32
Помогите, пожалуйста, решить задачу: 

Написать программу определения и вывода подсписков, которые не входят ни в какие другие подсписки. Вхождение определяется в теоретико-множественном смысле. 

Автор: _sg 22.12.2012, 01:02
Код

(defun check-sub (a w)
  (cond ((null w) nil)
        ((subsetp a (car w)) t)
        ((check-sub a (cdr w)))))

(defun unique-subs (w &aux (v (cdr w)))
  (cond ((null w) nil)
        ((check-sub (car w) v) (unique-subs (cdr w)))
        ((cons (car w) (unique-subs (cdr w))))))

> (unique-subs '((a b) (a b c) (d e) (f g h)))
((A B C) (D E) (F G H))

Автор: _sg 25.4.2014, 16:27
Код

(defun check-sub (a w)
  (when w (if (subsetp a (car w)) t (check-sub a (cdr w)))))

(defun unique-subs (w &aux (v (cdr w)))
  (when w (if (check-sub (car w) v)
              (unique-subs (cdr w))
              (cons (car w) (unique-subs (cdr w))))))

> (unique-subs '((a b) (a b c) (d e) (f g h)))
((A B C) (D E) (F G H))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)