Programmer sering terobsesi dengan menggambar fraktal. Saya pikir kita membutuhkan media berbasis komputer baru.
The pohon H adalah jenis cukup sederhana dari fraktal yang terbuat dari garis-garis horizontal dan vertikal. Ini dia saat iterasi kesepuluh ( courtesy Wikipedia ):
Sekarang, bayangkan setiap baris dalam gambar adalah direktori (folder) dalam sistem file komputer standar. Semua kecuali garis terkecil memotong dua garis lebih kecil dari diri mereka sendiri; dua garis yang lebih kecil ini adalah subdirektori dari garis yang lebih besar. Dengan demikian garis horizontal besar di tengah adalah direktori induk dari dua garis vertikal terbesar, yang pada gilirannya adalah orangtua, kakek-nenek, dll. Dari sisa garis dalam gambar.
Tantangan
Tulis sebuah program yang mengambil bilangan bulat positif N melalui stdin atau baris perintah (atau alternatif terdekat) dan membuat pohon direktori yang mencerminkan iterasi ke-N dari fraktal H tree.
Iterasi pertama (N = 1) adalah garis horizontal tunggal. Dalam setiap iterasi berikutnya, satu set garis vertikal atau horizontal baru ditambahkan ke ujung garis saat ini. Jadi untuk N = 2 dua garis vertikal ditambahkan (membuat bentuk H), untuk N = 3 empat garis horizontal ditambahkan ke sana, dll.
Nama direktori root harus selalu tree
. Nama-nama subdirektori harus sesuai dengan arah mereka berada di sehubungan dengan garis orang tua mereka, menggunakan right
, left
, up
dan down
.
Karena direktori root selalu berupa garis horizontal, direktori right
dan left
sub direktori akan selalu ada . Tetapi keduanya akan memiliki up
dan down
subdirektori, dan mereka akan memiliki right
dan left
lagi, dan seterusnya.
Direktori di akhir batas iterasi harus kosong.
Contoh
Untuk N = 3 pohon direktori akan terlihat seperti ini:
tree
right
up
down
left
up
down
Informasi tambahan
- Idealnya
tree
direktori akan muncul di folder yang sama dengan kode sumber, tetapi tidak apa-apa jika masuk ke beberapa direktori yang berfungsi. - Anda dapat berasumsi bahwa tidak ada
tree
direktori yang sudah ada di tempat Anda akan dibuat. - Anda dapat berasumsi bahwa program Anda akan selalu dijalankan pada sistem operasi modern umum yang sama (Mac / Windows / Linux). Pada dasarnya jangan khawatir tentang menggunakan pemisah file yang tidak berfungsi di semua OS.
Mencetak gol
Ini adalah kode-golf, jadi kode terpendek dalam byte menang.
sumber
tree
selalu harusleft
danright
bukannyaup
dandown
?Jawaban:
Ruby, 127 byte
Diuji pada Windows. Mengambil input melalui STDIN.
f
secara rekursif menghasilkan daftar daun yang diperlukan dari pohon, dan kemudian saya hanya memberi makan mereka dengan satu panggilan sistemmkdir
.sumber
Lua, 179
sumber
Python - 194
sumber
from os import*;s=system
["left","up"][n%2]
dan Anda bisa drop kurung di sekitar(0,1)
untuk memberifor i in 0,1:
Python 2 + * nix coreutils,
212189Menghasilkan semua jalur dan panggilan terdalam
mkdir -p
Gangguan jika input <1
sumber
import os,itertools as t