도전
기수 10에 정수 입력이 주어지면 입력에 해당하는 이진 포리스트에 대한 표현을 만듭니다. 표현에는 중첩 배열 및 문자열이 포함되지만 이에 국한되지는 않습니다.
방법?
입력을 이진으로 변환하십시오. 1
s는 가지를 나타내고 0
s는 잎을 나타냅니다.
이해하기 쉽도록 834
(이진수로 1101000010)을 예로 들어 봅시다 .
우리는 첫 번째 숫자로 시작합니다. 첫 번째 숫자는입니다 1
. 그래서 우리는 가지를 그립니다 :
\ / 1
또는 배열로 {{1}}
다음 숫자는입니다 1
. 따라서 더 많은 가지를 그립니다 (왼쪽에서 오른쪽으로 이동).
\ / 1 \ / 1
또는 배열로 {{1, {1}}}
다음 숫자는입니다 0
. 그래서 우리는 잎을 놓습니다 :
0 \ / 1 \ / 1
또는 배열로 {{1, {1, 0}}}
다음 숫자는입니다 1
.
\ / 0 1 \ / 1 \ / 1
또는 배열로 {{1, {1, 0, {1}}}}
과정을 반복하면 8 번째 숫자 뒤에 다음과 같은 트리가 나타납니다.
0 0 \ / 0 1 \ / 1 0 \ / 1
또는 배열로 {{1, {1, 0, {1, 0, 0}}, 0}}
나머지 자릿수에는 더 많은 나무를 그립니다.
9 번째 숫자는입니다 0
. 그래서 우리는 잎을 놓습니다.
0 0 \ / 0 1 \ / 1 0 \ / 1 0
또는 배열로 {{1, {1, 0, {1, 0, 0}}, 0}, 0}
모든 숫자를 사용하면 다음과 같이 끝납니다.
0 0 \ / 0 1 \ / 1,000 \ / \ / 10 1
또는 배열로 {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
이상하게 보이므로 트리를 완성하기 위해 0을 채 웁니다.
0 0 \ / 0 1 \ / 1,000 \ / \ / 10 1
또는 배열로 {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
배열을 평탄화하면 원래 숫자가 2 진수로 표시되지만 0이 채워집니다.
기준
- 출력은 나무와 가지의 분리를 명확하게 보여 주어야합니다 (중첩 배열이 아닌 경우 출력 형식을 설명하십시오).
- 출력에서 모든 숫자를 추출하는 것은 입력의 이진 표현과 동일해야합니다 (위의 프로세스에서 0으로 채워짐).
테스트 사례
기준을 충족하는 한 출력이 다를 수 있습니다.
0-> {0} 1-> {{1, 0, 0}} 44-> {{1, 0, {1, {1, 0, 0}, 0}}} 63-> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}} 404-> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}}} 1337-> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
채점
이것은 code-golf 이므로 가장 낮은 바이트가 이깁니다!