미적으로 유쾌한 제수 트리는 n
모든 합성 수 에 대해의 제곱근에 가장 가까운 제수 쌍인m
두 개의 자식 노드를 갖는 입력 제수 트리 입니다 . 왼쪽 노드는 더 작은 제수 여야하고 오른쪽 노드는 더 큰 제수 여야합니다 . 트리의 소수에는 자식 노드가 없어야합니다. 당신의 나무는 텍스트 아트 또는 이미지 형태 일 수 있습니다. 텍스트 아트 출력 규칙은 다음과 같습니다.m
m
m
간격 규칙
트리에서 노드 간격을두기 위해 다음 규칙이 있습니다.
- 루트에서 지정된 깊이의 노드는 모두 출력에서 동일한 텍스트 줄에 있어야합니다.
/ \ NOT / \ / \ / 삼 2 3 2
- 왼쪽 노드의 경우, 노드가 한 자리 숫자 인 경우에는 수신 분기가 오른쪽 상단에 있어야합니다. 그렇지 않으면 마지막 자리 바로 위에 있습니다. 예:
/ 그리고 / 3720
- 오른쪽 노드의 경우 노드가 한 자리 숫자 인 경우 들어오는 분기는 왼쪽 상단에 있어야합니다. 그렇지 않으면 첫 번째 숫자 바로 위에 있습니다. 예:
그리고 \ 7 243
- 나가는 왼쪽 분기의 경우 분기는 숫자 왼쪽에서 한 칸씩 시작해야합니다. 예:
275 / 11
- 나가는 오른쪽 분기의 경우 분기 오른쪽에서 한 칸씩 시작해야합니다. 예:
275 \ 25
- 같은 레벨의 트리에있는 두 노드는 그들 사이에 최소 두 개의 공백이 있어야합니다. 동시에, 동일한 레벨의 트리 에 있는 두 개의 서브 트리는 가능한 한 적은 간격을 가져야합니다.
** 하위 트리 **가 너무 가까워서이 트리가 작동하지 않습니다. 504 / \ / \ / \ / \ 21. 24 / \. / \ / \. / \ 3 7. 4 6 . / \ / \ .2 2 2 3 이 나무는 가지 사이에 충분한 공간이 있습니다. 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 3
- 두 개의 하위 트리가 나무에서 너무 가까이 있으면
/\
부모 위의 트리에 다른 분기 행을 추가하여 분리 할 수 있습니다 .
441 / \ 마지막 행이 아직 채워지지 않았으며 이미 공간이 부족합니다. 21 21 / \ / \ 분기의 다른 행 추가 441 / \ 거의 비슷하지만 7과 3이 너무 가깝습니다. / \ 하나 더 행해야합니다. 21 21 / \ / \ 3 7 3 7 분기의 다른 행 추가 441 / \ 끝났습니다. / \ / \ 21 21 / \ / \ 3 7 3 7
예
전체 예를 들어, 24의 제수 트리는 다음과 같습니다.
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4와 6은 24의 제곱근에 가장 가까운 한 쌍의 제수입니다. 4는 더 작기 때문에 왼쪽에 있습니다. 다음 줄에서 3의 왼쪽에있는 숫자 2는 더 작기 때문입니다.
63의 제수 트리는 다음과 같아야합니다.
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
잘못된 트리에서 3과 21은 63의 제곱근에 가장 가까운 제수 쌍이 아니며 3과 7은 올바르게 정렬되지 않습니다. 그러나 21의 지점 배치는 정확합니다.
42의 경우 다음이 있어야합니다.
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
720을 보도록하겠습니다 720
. 24
그리고 30
하위 트리가 올바르게 배치 되도록 5 가지 레벨의 분기가 필요 합니다. 또한, 참고 24
및 30
지점의 두 가지 수준을 가지고 있기 때문에 4
하고 6
정확한 간격과의 아이 노드가 필요 아이 노드가 30
의 아이 노드와 동일한 수준에있을 필요 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
도전
- 당신의 임무는 입력을 위해 올바르게 배치 된 미적으로 유쾌한 제수 트리를 만드는 것입니다.
n
여기서n
1보다 큰 양의 정수입니다. - 출력에는 선행 및 후행 공백과 선행 및 후행 줄 바꿈이 포함될 수 있지만 위에 제공된 간격 규칙을 준수해야합니다.
- 텍스트 아트, 이미지 (필요한 경우 추가 할 다른 형식)로 출력 할 수 있습니다.
- 이미지의 경우 트리의 노드 간격이 일정하고 트리에서 동일한 높이의 노드가 이미지에서 동일한 높이인지 확인하십시오.
- 이것은 코드 골프입니다. 최소 바이트 수 (또는 이에 상응하는)가 이깁니다.
이 아이디어를 생각한 Stewie Griffin에게 감사의 말을 전하며 사양을 다시 작성하는 데 도움을 준 Peter Taylor, Martin Ender, Mego 및 Eᴀsᴛᴇʀʟʏ Iʀᴋ에게 감사의 말을 전합니다. 평소와 같이 제안이나 수정은 대단히 감사하겠습니다. 행운과 좋은 골프!
더 많은 테스트 사례 :
2
4
/ \
2 2
20
/ \
4 5
/ \
2 2
323
/ \
17 19
362880
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
576 630
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
24 24 21 30
/ \ / \ / \ / \
/ \ / \ / \ / \
4 6 4 6 3 7 5 6
/ \ / \ / \ / \ / \
2 2 2 3 2 2 2 3 2 3
1286250
/ \
/ \
/ \
/ \
/ \
1050 1225
/ \ / \
/ \ / \
/ \ / \
30 35 35 35
/ \ / \ / \ / \
5 6 5 7 5 7 5 7
/ \
2 3