Соревнование (!): На языке по вашему выбору напишите программу, которая будет проходить по дереву каталогов данного каталога и выводить дерево (то есть массив массивов), соответствующее ему. Предположим, каталог является предопределенной переменной D. Наименьшее количество символов выигрывает.
Правила:
- Вы должны использовать рекурсию
- Смотрите правила
Примечание. Предположим, что нет пределов глубины рекурсии. Другими словами, ваш код просто должен работать для достаточно маленьких деревьев каталогов, и в принципе для больших.
Например:
Дерево каталогов
dir1
├── dir11
│ ├── file111
│ └── file112
├── dir12
│ ├── file121
│ ├── file122
│ └── file123
├── file11
├── file12
└── file13
Выходное дерево
[[[],[]],[[],[],[]],[],[],[]]
Первый код гольф здесь, так что позвольте мне знать, если я делаю что-то не так.
Повеселись :)
code-golf
file-system
Андрей Одесский
источник
источник
Ответы:
Mathematica
1202120Явная рекурсия (спасибо alephalpha за сохранение одного символа):
Предыдущее слишком сложное решение:
источник
f=f/@__~FileNames~#&
Рубин, 38 символов
Если вы не возражаете против лишних пробелов в выводе:
Пример использования:
Выход:
Если у меня не может быть пробела, что-то вроде этого для второй строки:
источник
Python 2,7, 111 символов
Принимает целевой путь от стандартного ввода.
источник
Powershell - 182 символа
Довольно просто. Может быть уменьшено на 10 символов, если запятые не требуются. Принимает входные данные от $ D (как указано в вопросе), возвращает выходные данные на STD-Out, как в примере в вопросе.
Действительно желающие псевдонимы могут использовать параметры! Я был убит хозяином записи -NoNewline!
источник
C # 200 символов
Вывод строки, а не фактического массива. Принимает путь в качестве первого аргумента.
Ungolfed:
источник
C ++, 318 байт
Вот немного неутешительная версия:
Обратите внимание, что, поскольку - согласно инструкциям - D предполагается заранее определенной переменной, код не собирается без какого-либо предоставления D. Вот один из способов построения:
источник
Пакетный скрипт -
146, 157, 152,127 байт.Бежать с:
источник