Естетично дільник дерево є деревом подільників введення , n
що для будь-якого складеного числа m
, має дві дочірніх вузли , які є парою подільників , які знаходяться ближче до кореню квадратному з m
. Лівий вузол повинен бути меншим дільником, m
а правий вузол - більшим дільником m
. Просте число в дереві не повинно мати дітових вузлів. Ваше дерево може бути у формі тексту тексту чи зображення. Правила виведення тексту тексту наступні.
Правила інтервалу
Для розміщення вузлів на дереві ми маємо такі правила:
- Вузли на заданій глибині від кореня повинні бути в одному рядку тексту у висновку.
/ \ НЕ / \ / \ / 3 2 3 2
- Для лівих вузлів вхідна гілка повинна знаходитися у верхньому правому куті, якщо вузол - одноцифрове число, в іншому випадку - трохи вище останньої цифри. Приклад:
/ І / 3 720
- Для правильних вузлів вхідна гілка повинна знаходитися в лівій верхній частині, якщо вузол - одноцифрове число, в іншому випадку - трохи вище першої цифри. Приклад:
\ І \ 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 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 знаходиться зліва, тому що вона менша. У наступному рядку цифра 2 зліва від 3, тому що вона менша.
Дерево дільника на 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
підтрубки були правильно розташовані. Також зауважте, що 24
і 30
мають два рівні гілок, тому що 4
і 6
є дочірні вузли, які потребують правильного проміжку, і дитячі вузли 30
повинні бути на тому ж рівні , що і дочірні вузли 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
Змагання
- Ваше завдання полягає в тому, щоб створити правильно впорядковане естетично приємне дерево дільника для введення
n
, деn
додатне ціле число більше 1. - Ваш вихід може містити провідні та кінцеві пробіли, а також провідні та кінцеві нові рядки, але в іншому випадку повинен відповідати правилам інтервалу, наведеним вище.
- Вашим результатом може бути: текст тексту, зображення (інші необхідні формати, якщо потрібно).
- Для зображень переконайтесь, що вузли вашого дерева добре розташовані, а також, щоб вузли на одній висоті в дереві були на одній висоті на зображенні.
- Це код гольфу. Найменша кількість байтів (або еквівалент) виграє.
Подяка Стюі Гріффін за думку про цю ідею, і велике спасибі Пітеру Тейлору, Мартіну Ендеру, Мего та Еᴀсᴛᴇʀʟʏ Іʀᴋ за допомогу в переписанні специфікації. Як завжди, будь-які пропозиції чи виправлення високо оцінюються. Успіхів і хорошого гольфу!
Більше тестових випадків:
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