Make a directory tree

7

Imagine for a second that you can compose a tree out of dots.

       .
      ...
     .....
    .......
   .........
  ...........
 .............
...............
      ...
      ...

This tree is 13 dots tall.

Now imagine for a second that your filesystem looked like these dots. Your task in this challenge is to make a tree out of folders.

The Challenge

Given an input integer (let's call it n), make a tree out of subdirectories.

  1. In each tree, you should start with a folder called 1.
  2. In that folder, put the folders 1, 2, and 3.
  3. In every level of folder thereon until n-3, in folder 1 of this level of the tree, there should be a folder labelled 1 and 2. In folder 2 of this level of the tree, there should be a folder called 3, in folder 3, a folder called called 4, and so on until the last folder (the integer this folder is called, we'll call k), in which there should be a folder called k and one called k+1.
  4. At level n-3, however, all of the subdirectories but the middle three folders should be replaced with a file with the name that the subdirectories would have had. The middle three subdirectories should remain as subdirectories.
  5. These three subdirectories should contain a folder called 1, 2, or 3 with respect to the order of these directories' name.
  6. These are followed by a layer of files where 1 is in folder 1, 2 is in folder 2, and 3 is in folder three.

The example shown at the top of this question is represented below in folder form.

folders

This would be n = 13.

Rules

  • You may use builtins for folder creation, but not for subdirectory creation.
  • All other standard loopholes apply.
  • You must support past n=5, but do not have to support greater than n=30.

Addison Crump

Posted 2016-03-18T21:59:59.893

Reputation: 10 763

There are several problems with the original post here. The tree of dots appears to be 10 dots tall, not 13. In the graphic, the folders are 9 deep, so I'm assuming it should be n=9. The last folders on each level contain folders named k+1 and k+2, not k and k+1. – Chuck Morris – 2016-06-05T03:39:14.977

Answers

3

Windows Batch File, 429 423 404 bytes

md 1
set C= call:
set/a M=%1-2
%C%f 1 1 2 L
%C%f 1 2 2 M
%C%f 1 3 2 R
goto:eof
:f
md %1\%2
set/a P=%2+1
set/a Q=%2+2
set/a L=%3+1
set D= (%C%t %1\%2\%P% 
if %L%==%M% (if %4==L .>%1\%2\1
if %Q%==%M%%D%1)else (if %P%==%M%%D%2)else (if %2==%M%%D%3)else .>%1\%2\%P%))
if %4==R .>%1\%2\%Q%
)else (if %4==L%C%f %1\%2 1 %L% L
%C%f %1\%2 %P% %L% M
if %4==R%C%f %1\%2 %Q% %L% R)
goto:eof
:t
md %1\%2
.>%1\%2\%2

Call it with the value of n as a command line parameter.

Here is a visualization of the output tree for n=9:

                   1
                +--+--+
                1  2  3
             +--+  |  +--+
             1  2  3  4  5
          +--+  |  |  |  +--+
          1  2  3  4  5  6  7
       +--+  +  |  |  |  |  +--+
       1  2  3  4  5  6  7  8  9
    +--+  |  |  |  |  |  |  |  +--+
    1  2  3  4  5  6  7  8  9 10 11
 +--+  |  |  |  |  |  |  |  |  |  +--+
 1  2  3  4  5  6  7  8  9 10 11 12 13
                |  |  |
                1  2  3
                |  |  |
                1  2  3

Chuck Morris

Posted 2016-03-18T21:59:59.893

Reputation: 456