두 개의리스트, lst1
및 lst2
이 있습니다. 일부 요소를 공유하는지 확인하는 함수를 정의하려고합니다. 예를 들어 :리스트가 라켓에서 하나 이상의 요소를 공유하는지 확인
(share-some-elements? '(a b) '(a c))
⇒ 사실(share-some-elements? '(a b) '(d e f))
⇒ 거짓(share-some-elements? '(a b) '(a b d e))
⇒는
내가 구현이 true를 확인
(define (share-some-elements? lst1 lst2)
(ormap (λ (x) (member x lst1)) lst2))
는 lst2
의 각 요소 인 경우 lst1
의 회원 , 그 중 하나가 true이면 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))
⇒ 사실
파이썬에서 두 목록에이 작업을 수행하는 방법에 대한 비슷한 질문이있다 : Checking if two lists share at least one element를, 아무튼 내 질문에 꽤 답할 수 없다.
당신은 [설정 교차로] 사용할 수 있습니다 (http://docs.racket-lang.org/reference/sets.html#%28def._%28% 28lib._racket % 2Fset..rkt % 29._set-intersect % 29 % 29), 여러 목록에서 작동합니다. 교차가 비어 있지 않으면 공통 요소가 있습니다. – Renzo