Програмісти часто одержимі малюванням фракталів. Я думаю, нам потрібен новий комп'ютерний носій.
Н дерево є досить простим типом фрактала виготовлений з горизонтальних і вертикальних ліній. Ось це вже десята ітерація ( люб’язно надана Вікіпедія ):
Тепер уявіть, що кожен із рядків на зображенні - це каталог (папка) у стандартній комп'ютерній файловій системі. Усі, крім найменших ліній, перетинаються на дві лінії, менші за себе; ці два менші рядки є підкаталогами більшого рядка. Таким чином, велика горизонтальна лінія посередині - це батьківський каталог двох найбільших вертикальних ліній, які в свою чергу є батьками, бабусями та дідусями та ін. Решти рядків на зображенні.
Виклик
Напишіть програму, яка приймає натуральне число N через stdin або командний рядок (або найближчу альтернативу) і створює дерево каталогів, яке відображає N-ту ітерацію фрактала дерева H.
Перша ітерація (N = 1) - це одна горизонтальна лінія. У кожній наступній ітерації до кінців поточних ліній додається новий набір вертикальних або горизонтальних ліній. Так для N = 2 додаються дві вертикальні лінії (утворюючи форму Н), для N = 3 до цього додаються чотири горизонтальні лінії тощо.
Ім'я кореневого каталогу завжди має бути tree
. Імена підкаталогів повинні співпадати з напрямом , вони перебувають у відношенні їх материнській лінії, використовуючи right
, left
, up
і down
.
Оскільки кореневий каталог завжди є горизонтальним рядком, він завжди матиме right
і left
підкаталоги. Але ці два матимуть up
і down
підкаталоги, і ті матимуть right
і left
знову, і так далі.
Каталоги в кінці межі ітерацій повинні бути порожніми.
Приклад
Для N = 3 дерево каталогів має виглядати так:
tree
right
up
down
left
up
down
Додаткова інформація
- В ідеалі
tree
каталог спливе в тій самій папці, в якому знаходиться вихідний код, але це добре, якщо він перейде в деякий робочий каталог. - Ви можете припустити, що
tree
в тому місці, де буде створено ваше місце , не існує попереднього каталогу. - Ви можете припустити, що ваша програма завжди працюватиме в одній загальній сучасній операційній системі (Mac / Windows / Linux). В основному не турбуйтеся про використання роздільника файлів, який працює не у всіх ОС.
Оцінка балів
Це код-гольф, тому виграє найкоротший код у байтах .
tree
завжди мають бути підкаталоги завжди,left
аright
неup
іdown
?