이 도전에서, 당신의 임무는 일련의 지시문으로부터 무 방향 그래프를 구성하는 것입니다. 음이 아닌 각 정수마다 하나의 지시문이 있으며 각 그래프는 지정된 그래프를 새 것으로 변환합니다.
- 지시문
0
: 연결이 끊어진 새 노드를 추가하십시오. - 지시문
1
: 새 노드를 추가하고 기존의 모든 노드에 연결하십시오. - 지시어
m > 1
: 정도 (이웃 수)를로 나눌 수있는 모든 노드를 제거하십시오m
. 참고0
모든로 나누어m
분리 노드가 항상 제거되도록.
지시문은 빈 그래프부터 시작하여 왼쪽에서 오른쪽으로 하나씩 적용됩니다. 예를 들어 시퀀스 [0,1,0,1,0,1,3]
는 다음과 같이 처리되며 멋진 ASCII 아트를 사용하여 설명됩니다. 빈 그래프로 시작하여 다음과 같이 단일 정점을 추가합니다 0
.
a
그런 다음 다른 정점을 추가하고 지시에 따라 첫 번째 정점에 연결하십시오 1
.
a--b
의 지시에 따라 우리는 다음 다른 연결이 끊어 정점과 연결된 하나를 추가 0
하고 1
:
a--b c
\ \ /
`--d
우리는 0
and의 지시에 따라 이것을 한 번 더 반복합니다 1
.
,--f--e
/ /|\
a--b | c
\ \|/
`--d
마지막으로, 우리는 정도-3 정점을 제거 a
하고 b
지시에 따라, 3
:
f--e
|\
| c
|/
d
이것은 시퀀스에 의해 정의 된 그래프 [0,1,0,1,0,1,3]
입니다.
입력
지시문 시퀀스를 나타내는 음이 아닌 정수 목록입니다.
산출
시퀀스에 의해 정의 된 그래프의 노드 수입니다.
테스트 사례
[] -> 0
[5] -> 0
[0,0,0,11] -> 0
[0,1,0,1,0,1,3] -> 4
[0,0,0,1,1,1] -> 6
[0,0,1,1,0,0,1,1,2,5,7,0,1] -> 6
[0,0,1,1,1,1,5,1,4,3,1,0,0,0,1,2] -> 6
[0,0,1,1,0,0,1,1,5,2,3,0,0,1,1,0,0,1,1,3,4,0,0,1,1,2,1,1] -> 8
[0,0,1,1,0,0,1,1,2,5,7,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,8] -> 14
자세한 규칙
함수 또는 전체 프로그램을 작성할 수 있습니다. 가장 짧은 바이트 수가 이깁니다. 표준 허점은 허용되지 않습니다. 답에 알고리즘을 설명하십시오.
일주일이 지났으므로 가장 짧은 대답을 받아 들였습니다. 더 짧은 것이 나중에 나오면 선택을 업데이트하겠습니다. 피터 테일러 (Peter Taylor)의 답변에 대한 언급이있다 .