Codegolf — Создать Дерево Каталогов

  • Автор темы Laurus-nobilis
  • Обновлено
  • 23, Oct 2024
  • #1

Представьте на секунду, что из точек можно составить дерево.

 n = 13 

Это дерево имеет высоту 13 точек.

Теперь представьте на секунду, что ваша файловая система выглядит как эти точки. Ваша задача в этом челлендже — составить дерево из папок.

Вызов

Учитывая входное целое число (назовем его n-3 ), make a tree out of subdirectories.

  1. В каждом дереве вы должны начинать с папки с именем 1.
  2. В эту папку поместите папки 1, 2 и 3.
  3. На каждом уровне папки до тех пор, пока k+1 , 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 ), в которой должна быть папка с названием k and one called n-3 .
  4. На уровне n , 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. Эти три подкаталога должны содержать папку с номером 1, 2 или 3 в зависимости от порядка имен этих каталогов.
  6. За ними следует слой файлов, где 1 находится в папке 1, 2 — в папке 2, а 3 — в папке три.

Пример, показанный в верхней части этого вопроса, представлен ниже в виде папки.

codegolf — создать дерево каталогов

Это было бы . ... ..... ....... ......... ........... ............. ............... ... ... .

Правила

  • Вы можете использовать встроенные функции для создания папок, но не для создания подкаталогов.
  • Применяются все остальные стандартные лазейки.
  • Вы должны поддерживать более n=5, но не обязательно поддерживать более n=30.

#code-golf #файловая система

Laurus-nobilis


Рег
05 Jan, 2012

Тем
65

Постов
203

Баллов
538
  • 26, Oct 2024
  • #2

Окна Пакетный файл, 429 423 404 байт

 
                    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
 

Вызовите его со значением n в качестве параметра командной строки.

Вот визуализация выходного дерева для n=9:

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
 

Вован69


Рег
24 Dec, 2006

Тем
69

Постов
200

Баллов
585
Тем
403,760
Комментарии
400,028
Опыт
2,418,908