목표는 두 정수 목록의 교집합을 계산하는 것입니다. 교집합은 두 입력 목록에서 한 번 이상 발견 된 순서가없는 고유 한 정수 그룹으로 정의됩니다.
입력
입력은 원하는 형식 (함수 매개 변수, stdio 등) 일 수 있으며 두 개의 정수 목록으로 구성됩니다. 음수가 아닌 정수를 포함 할 수있는 것 (즉, 정렬되지 않았거나 중복을 포함하거나 길이가 다를 수 있으며 비어있을 수도 있음) 외에 각 목록에 대해 아무 것도 가정하지 않습니다. 각 정수는 사용자 언어의 고유 부호있는 정수 유형에 적합하고 10 진수 이상의 길이 일 수 있으며 부호가있는 것으로 가정합니다.
입력 예 :
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
산출
출력은 두 목록이 원하는 형식 (반환 값, stdio 등)으로 설정된 교차점을 나타내는 정수와 같은 목록과 같습니다. 출력이 정렬 될 필요는 없지만 항상 정렬되는 구현을 제공 할 수 있습니다. 출력은 순서가없는 유효한 세트를 구성해야합니다 (예 : 중복 값을 포함하지 않아야 함).
테스트 사례 예 (출력 순서는 중요하지 않음) :
처음 두 줄은 입력 목록이고 세 번째 줄은 출력입니다. (empty)
빈 목록을 나타냅니다.
(empty)
(empty)
(empty)
1000
(empty)
(empty)
3 1 2 4 3 1 1 1 1 3
3 1 -1 0 8 3 3 1
1 3
1 2 1
3 3 4
(empty)
채점
이것은 코드 골프입니다. 바이트 단위의 최단 답변이 이깁니다.
표준 루프 홀은 금지되어 있습니다. 세트 형 작업용으로 설계되지 않은 내장 기능을 사용할 수 있습니다.
금지 된 내장 기능 :
- 복제본 생성 / 제거 설정
- 차이 / 교차점 / 연합 설정
- 일반화 된 멤버쉽 테스트 (예 :
in
Python 의 키워드indexOf
와 유사한 기능, 비슷한 함수 등) 파이썬이in
키워드를 재사용 하여이 구문을 생성 한다는 사실에도 불구하고 "foreach item in list"구문의 사용은 허용됩니다 (다른 제한을 위반하지 않는다고 가정) . - 이러한 금지 된 내장 기능은 "바이러스 성"입니다. 즉, 이러한 하위 기능을 포함하는 더 큰 내장 기능이있는 경우 이와 유사하게 금지됩니다 (예 : 목록의 구성원 별 필터링).
위의 목록에없는 내장 기능 (예 : 정렬, 정수 동등성 테스트, 인덱스 별 목록 추가 / 제거, 필터링 등)이 허용됩니다.
예를 들어, 다음 두 가지 예제 스 니펫 (Python과 유사한 코드)을 사용하십시오.
# prohibited: filters by testing if each value in tmpList is a member of listA
result = tmpList.filter(listA)
# ok: filtering by a lambda which manually iterates over listA and checks for equality
def my_in_func(val, slist):
for a in slist:
if(val == a):
return True
return False
result = filter(lambda v: my_in_func(val, listA), tmpList)
이러한 세트와 같은 기능을 직접 구현할 수 있으며 점수에 반영됩니다.
솔루션은 합리적인 시간 내에 완료해야합니다 (예 : 두 개의 목록 (길이가 각각 1000) 인 모든 하드웨어에서 1 분 미만).