Concurso (!): No idioma de sua escolha, escreva um programa que percorra a árvore de diretórios de um determinado diretório e produza uma árvore (ou seja, uma matriz de matrizes) correspondente a ele. Suponha que o diretório seja uma variável predefinida D. A menor contagem de caracteres vence.
Regras:
- Você deve usar recursão
- Ver Regras
Nota: Suponha que não haja limites de profundidade de recursão. Em outras palavras, seu código só precisa funcionar para árvores de diretório suficientemente pequenas e, em princípio, para árvores maiores.
Por exemplo:
A árvore de diretórios é
dir1
├── dir11
│ ├── file111
│ └── file112
├── dir12
│ ├── file121
│ ├── file122
│ └── file123
├── file11
├── file12
└── file13
A árvore de saída é
[[[],[]],[[],[],[]],[],[],[]]
Primeiro código de golfe aqui, então deixe-me saber se estou fazendo algo errado.
Diverta-se :)
code-golf
file-system
Andrew Odesky
fonte
fonte
Respostas:
Mathematica
1202120Recursão explícita (obrigado alephalpha por salvar um caractere):
Solução supercomplicada anterior:
fonte
f=f/@__~FileNames~#&
Ruby, 38 caracteres
Se você não se importa com algum espaço em branco extra na saída:
Exemplo de uso:
Resultado:
Se eu não puder ter o espaço em branco, algo assim para a segunda linha:
fonte
Python 2.7, 111 caracteres
Pega o caminho de destino de stdin.
fonte
Powershell - 182 Char
Relativamente simples. Pode ser reduzido em 10 caracteres se as vírgulas não forem necessárias. Recebe entrada de $ D (como declarado na pergunta), retorna a saída em STD-Out como foi o exemplo da pergunta.
Realmente desejando aliases poderiam usar opções! Estou sendo morto pelos 'write-host -NoNewline's!
fonte
Caracteres C # 200
Saída de uma string, não de uma matriz real. Toma um caminho como o primeiro argumento.
Ungolfed:
fonte
C ++, 318 bytes
Aqui está uma versão ligeiramente não-destruída:
Observe que, como - por instruções - D é assumida como uma variável predefinida, o código não é construído sem fornecer de alguma forma o D. Aqui está uma maneira de criar:
fonte
Script em lote -
146, 157, 152127 bytesCorrer com:
fonte