私はlst1
とlst2
という2つのリストを持っています。彼らがいくつかの要素を共有しているかどうかをチェックする関数を定義したいと思います。たとえば、次のようにリストがラケットの1つ以上の要素を共有しているかどうかをチェック
(share-some-elements? '(a b) '(a c))
⇒真(share-some-elements? '(a b) '(d e f))
⇒偽(share-some-elements? '(a b) '(a b d e))
⇒真
私は実装があります
(define (share-some-elements? lst1 lst2)
(ormap (λ (x) (member x lst1)) lst2))
lst2
の各要素があるかどうかをチェックしますlst1
のメンバーそれらのいずれかが存在する場合はtrueを返します。
私の質問は以下のとおりです。
- これを行うための他の方法は何ですか?
- これを拡張して、任意の数のリストをサポートするにはどうすればよいですか?すなわち、
(all-share-some-elements? '(a b) '(a c) '(a d))
真
⇒真
(all-share-some-elements? '(a b) '(a c) '(b d))
⇒偽(all-share-some-elements? '(a b) '(a c) '(b d a))
⇒pythonで二つのリストにこれを行う方法で同様の問題があります: Checking if two lists share at least one element、doesnの私の質問には全く答えられません。
[設定-交差点を](http://docs.racket-lang.org/reference/sets.html#%28def._%28% 28lib._racket%2Fset..rkt%29._set-intersect%29%29)、複数のリストで動作します。交差点が空でない場合は、共通の要素があります。 – Renzo