Konkurs (!): W wybranym języku napisz program, który przejdzie przez drzewo katalogów danego katalogu i wyświetli odpowiadające mu drzewo (tj. Tablicę tablic). Załóżmy, że katalog jest predefiniowaną zmienną D. Wygrywa najmniejsza liczba znaków.
Zasady:
- Musisz użyć rekurencji
- Zobacz zasady
Uwaga: Załóżmy, że nie ma limitów głębokości rekurencji. Innymi słowy, twój kod musi po prostu działać dla wystarczająco małych drzew katalogów, i zasadniczo dla większych.
Na przykład:
Drzewo katalogów to
dir1
├── dir11
│ ├── file111
│ └── file112
├── dir12
│ ├── file121
│ ├── file122
│ └── file123
├── file11
├── file12
└── file13
Drzewo wyjściowe to
[[[],[]],[[],[],[]],[],[],[]]
Pierwszy kod golfowy, więc daj mi znać, czy robię coś źle.
Baw się dobrze :)
code-golf
file-system
Andrew Odesky
źródło
źródło
Odpowiedzi:
Mathematica
1202120Jawna rekurencja (dzięki alephalpha za uratowanie jednego znaku):
Poprzednie skomplikowane rozwiązanie:
źródło
f=f/@__~FileNames~#&
Ruby, 38 znaków
Jeśli nie przeszkadza ci dodatkowe spacje w danych wyjściowych:
Przykładowe użycie:
Wynik:
Jeśli nie mogę mieć spacji, coś takiego w drugiej linii:
źródło
Python 2.7, 111 znaków
Bierze ścieżkę docelową ze standardowego wejścia.
źródło
PowerShell - 182 Char
Dość proste. Można zmniejszyć o 10 znaków, jeśli przecinki nie są wymagane. Pobiera dane wejściowe z $ D (jak podano w pytaniu), zwraca dane wyjściowe w STD-Out, jak w przykładzie podanym w pytaniu.
Naprawdę pragnące aliasy mogłyby skorzystać z opcji! Zostaję zabity przez 'host-write -NoNewline's!
źródło
C # 200 znaków
Wyprowadzanie ciągu, a nie rzeczywistej tablicy. Jako pierwszy argument przyjmuje ścieżkę.
Nie golfowany:
źródło
C ++, 318 bajtów
Oto nieco niestosowana wersja:
Zauważ, że ponieważ - zgodnie z instrukcjami - D jest założoną zmienną predefiniowaną, kod nie buduje się bez podania D. Oto jeden ze sposobów budowania:
źródło
Skrypt wsadowy -
146, 157, 152127 bajtówBiegnij z:
źródło