Programmierer sind oft besessen davon , Fraktale zu zeichnen . Ich denke, wir brauchen ein neues computerbasiertes Medium.
Der H-Baum ist eine ziemlich einfache Art von Fraktalen, die aus horizontalen und vertikalen Linien bestehen. Hier ist es bei der zehnten Iteration (mit freundlicher Genehmigung von Wikipedia ):
Stellen Sie sich nun vor, jede der Zeilen im Bild ist ein Verzeichnis (Ordner) in einem Standard-Computer-Dateisystem. Alle außer den kleinsten Linien kreuzen zwei Linien, die kleiner sind als sie selbst; Diese beiden kleineren Zeilen sind Unterverzeichnisse der größeren Zeile. Somit ist die große horizontale Linie in der Mitte das Elternverzeichnis der beiden größten vertikalen Linien, die wiederum Eltern, Großeltern usw. der übrigen Linien im Bild sind.
Herausforderung
Schreiben Sie ein Programm, das eine positive Ganzzahl N über stdin oder die Befehlszeile (oder die nächstgelegene Alternative) aufnimmt und einen Verzeichnisbaum erstellt, der die N-te Iteration des H-Baum-Fraktals widerspiegelt.
Die erste Iteration (N = 1) ist eine einzelne horizontale Linie. In jeder nachfolgenden Iteration wird ein neuer Satz vertikaler oder horizontaler Linien an die Enden der aktuellen Linien angefügt. Für N = 2 werden also zwei vertikale Linien hinzugefügt (wodurch eine H-Form entsteht), für N = 3 werden vier horizontale Linien hinzugefügt usw.
Der Name des Stammverzeichnisses muss immer sein tree
. Die Namen der Unterverzeichnisse müssen die Richtung passen sie in Bezug auf ihre Elternlinie sind, mit right
, left
, up
und down
.
Da das Stammverzeichnis immer eine horizontale Linie ist, hat es immer right
und left
Unterverzeichnisse. Aber diese beiden haben up
und down
Unterverzeichnisse, und diese haben right
und left
wieder und so weiter.
Die Verzeichnisse am Ende des Iterationslimits sollten leer sein.
Beispiel
Für N = 3 sollte der Verzeichnisbaum so aussehen:
tree
right
up
down
left
up
down
Zusätzliche Information
- Idealerweise wird das
tree
Verzeichnis in demselben Ordner angezeigt, in dem sich der Quellcode befindet, aber es ist in Ordnung, wenn es in ein Arbeitsverzeichnis verschoben wird. - Sie können davon ausgehen, dass es
tree
an dem Ort, an dem Ihr Verzeichnis erstellt wird, kein bereits vorhandenes Verzeichnis gibt . - Sie können davon ausgehen, dass Ihr Programm immer auf demselben modernen Betriebssystem (Mac / Windows / Linux) ausgeführt wird. Grundsätzlich sollten Sie sich keine Gedanken über die Verwendung eines Dateitrennzeichens machen, das nicht in allen Betriebssystemen funktioniert.
Wertung
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes .
tree
immerleft
undright
stattup
und seindown
?