Вопрос

Я мог бы понять какой-то способ сделать это сам, но у меня есть чувство, что есть проще, возможно, встроенный способ сделать это. Я хочу посмотреть, все ли два списка разделяют элемент. Это два списка, с которыми я имею дело в данный момент:

((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6))

((0 1 7) (0 1 6) (0 1 3) (0 3 7) (0 3 6) (0 6 7) (1 3 7) (1 3 6) (1 6 7) (3 6 7)) 

Поскольку оба списка содержат (1 3 7), Я хотел бы сравнение списков, чтобы вернуться T.

Есть ли лучший способ сделать это, чем просто создать пару DOLISTS?

Это было полезно?

Решение

Как насчет Пересечение?

(defvar a '((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6)))
=> A
(defvar b '((0 1 7) (0 1 6) (0 1 3) (0 3 7) (0 3 6) (0 6 7) (1 3 7) (1 3 6) (1 6 7) (3 6 7)))
=> B
(intersection a b :test 'equal)
=> ((1 3 7) (0 3 6))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top