도전
프로그램은 3 개의 입력을 받아야합니다 :
- 변수의 수인 양의 정수
- 순서가없는 음이 아닌 정수 쌍의 세트. 여기서 각 쌍은 변수 사이의 동등성을 나타냅니다.
- 시작 변수를 나타내는 양의 정수
시작 변수 (시작 변수 자체 포함)와 전 이적으로 동일한 것으로 표시 될 수있는 모든 변수를 나타내는 음이 아닌 정수 세트를 리턴해야합니다.
즉, 주어진 입력에 N
, E
그리고 S
, 집합을 반환 Q
등이 :
S ∈ Q
.- 만약
Z ∈ Q
및(Y = Z) ∈ E
다음,Y ∈ Q
. - 만약
Z ∈ Q
및(Z = Y) ∈ E
다음,Y ∈ Q
.
이것은 그래프 이론 문제 로 표현 될 수도 있습니다 .
무 방향 그래프와 그래프에 꼭짓점이 있으면 연결된 구성 요소에 꼭짓점을 나열합니다 .
명세서
- 0 기반 또는 1 기반 색인 사용을 선택할 수 있습니다.
- 첫 번째 입력은 변수가 숫자로 제공되는 존재하는 변수의 수를 계산합니다. 또는이 입력을 사용할 수 없으며,이 경우 인덱싱 구성표에 따라 존재하는 가장 높은 가변 인덱스 또는이 값보다 하나 더 큰 것으로 가정합니다.
- 입력이 올바르게 구성되었다고 가정 할 수 있습니다. 첫 번째 입력으로 지정된 범위를 벗어난 변수는 제공되지 않습니다. 예를 들어,
3, [1 = 2, 2 = 0], 1
유효한 입력이지만4, [1 = 719, 1 = 2, 3 = 2], -3
그렇지 않습니다. - 당신은 할 수없는 어떤 변수가 그것과 연관된 평등있을 것이라는 점을 가정합니다. "고독한"(동일성이없는) 세 번째 입력이 주어지면 올바른 출력은 해당 입력 만 포함하는 싱글 톤 세트입니다 (자체와 같기 때문에).
- 당신은 등식 자체에 변수에서 평등을 포함하지 않을 것이라고 가정 할 수 있으며, 같은 평등은 여러 번 제공되지 않습니다 (이 같은 것들을 포함
1 = 2
하고2 = 1
). - 주어진 모든 정수가 언어의 표현 가능한 범위 내에 있다고 가정 할 수 있습니다.
- 합리적인 형식으로 두 번째 입력을 취할 수 있습니다.
합리적인 형식은 다음과 같습니다.
0 = 2
0 = 3
1 = 0
{(0, 2), (0, 3), (1, 0)}
[0, 2, 0, 3, 1, 0]
0 2 0 3 1 0
Graph[{{0, 2}, {0, 3}, {1, 0}}]
[0 = 2, 0 = 3, 1 = 0]
- 합리적인 형식 (예 : 세트, 목록 등)으로 출력 할 수 있습니다. 순서는 관련이 없습니다.
채점
이것은 code-golf 이므로 가장 짧은 유효한 프로그램 (바이트)이 이깁니다.
테스트 사례 (0 인덱스)
3, [1 = 2, 2 = 0], 1 -> {0, 1, 2}
5, [0 = 2, 0 = 3, 1 = 2], 3 -> {0, 1, 2, 3}
6, [0 = 3, 1 = 3, 2 = 4, 5 = 1], 4 -> {2, 4}
6, [0 = 3, 1 = 3, 2 = 4, 5 = 1], 5 -> {0, 1, 3, 5}
5, [0 = 1, 2 = 0, 0 = 3, 4 = 0], 2 -> {0, 1, 2, 3, 4}
6, [0 = 1, 1 = 2, 2 = 3, 3 = 4, 4 = 5], 3 -> {0, 1, 2, 3, 4, 5}
4, [0 = 1, 1 = 2, 2 = 0], 3 -> {3}
5, [0 = 2, 2 = 4], 2 -> {0, 2, 4}
8, [], 7 -> {7}
테스트 사례 (1 색인)
3, [2 = 3, 3 = 1], 2 -> {1, 2, 3}
5, [1 = 3, 1 = 4, 2 = 3], 4 -> {1, 2, 3, 4}
6, [1 = 4, 2 = 4, 3 = 5, 6 = 2], 5 -> {3, 5}
6, [1 = 4, 2 = 4, 3 = 5, 6 = 2], 6 -> {1, 2, 4, 6}
5, [1 = 2, 3 = 1, 1 = 4, 5 = 1], 3 -> {1, 2, 3, 4, 5}
6, [1 = 2, 2 = 3, 3 = 4, 4 = 5, 5 = 6], 4 -> {1, 2, 3, 4, 5, 6}
4, [1 = 2, 2 = 3, 3 = 1], 4 -> {4}
5, [1 = 3, 3 = 5], 3 -> {1, 3, 5}
8, [], 8 -> {8}