2010-11-25 17 views
5

Bunu kendim yapmanın bir yolunu anlayabiliyordum ama bunu yapmanın daha basit, belki de yerleşik bir yolu olduğunu hissediyorum. İki listenin bir öğeyi paylaşıp paylaşmadığını görmek istiyorum. Her iki listeleri (1 3 7) ihtivaLisp'deki listelerin karşılaştırılması

((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)) 

beri, T dönmek için listelerin bir karşılaştırmasını istiyorum: Bu şu anda uğraştığım İki liste vardır.

Bunu yapmak için daha iyi bir yol var mı, bir çift DOLIST s kurmaktan daha mı?

cevap

8

INTERSECTION nasıl olur?

(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)) 
+0

Nice! Tam olarak istediğim buydu. Teşekkürler. –

İlgili konular