Wettbewerb (!): Schreiben Sie in der Sprache Ihrer Wahl ein Programm, das den Verzeichnisbaum eines bestimmten Verzeichnisses durchläuft und einen entsprechenden Baum (dh ein Array von Arrays) ausgibt. Angenommen, das Verzeichnis ist eine vordefinierte Variable D. Die kleinste Zeichenanzahl gewinnt.
Regeln:
- Sie müssen die Rekursion verwenden
- Siehe Regeln
Hinweis: Angenommen, es gibt keine Rekursionstiefenbeschränkungen. Mit anderen Worten, Ihr Code muss nur für ausreichend kleine Verzeichnisbäume und im Prinzip für größere funktionieren.
Zum Beispiel:
Verzeichnisbaum ist
dir1
├── dir11
│ ├── file111
│ └── file112
├── dir12
│ ├── file121
│ ├── file122
│ └── file123
├── file11
├── file12
└── file13
Ausgabebaum ist
[[[],[]],[[],[],[]],[],[],[]]
Erster Code Golf hier, damit ich weiß, ob ich etwas falsch mache.
Habe Spaß :)
code-golf
file-system
Andrew Odesky
quelle
quelle
Antworten:
Mathematica
1202120Explizite Rekursion (danke alephalpha für das Speichern eines Zeichens):
Vorherige überkomplizierte Lösung:
quelle
f=f/@__~FileNames~#&
Ruby, 38 Zeichen
Wenn Ihnen zusätzliche Leerzeichen in der Ausgabe nichts ausmachen:
Anwendungsbeispiel:
Ausgabe:
Wenn ich das Leerzeichen nicht haben kann, so etwas für die zweite Zeile:
quelle
Python 2.7, 111 Zeichen
Nimmt den Zielpfad von stdin.
quelle
Powershell - 182 Char
Ziemlich Einfach. Könnte um 10 Zeichen reduziert werden, wenn die Kommas nicht benötigt würden. Nimmt Eingaben von $ D (wie in Frage angegeben) entgegen und gibt die Ausgabe auf STD-Out zurück, wie im Beispiel in der Frage angegeben.
Ich wünschte wirklich, Aliase könnten Optionen verwenden! Ich werde von den 'Write-Host-NoNewline's' getötet!
quelle
C # 200 Zeichen
Ausgabe eines Strings, kein tatsächliches Array. Nimmt einen Pfad als erstes Argument.
Ungolfed:
quelle
C ++, 318 Bytes
Hier ist eine leicht ungolfed Version:
Bitte beachten Sie, dass - gemäß den Anweisungen - D als vordefinierte Variable angenommen wird, der Code nicht erstellt wird, ohne D anzugeben. Hier ist eine Möglichkeit zum Erstellen:
quelle
Batch-Skript -
146, 157, 152,127 ByteLaufen Sie mit:
quelle