Các lập trình viên thường bị ám ảnh với việc vẽ fractals. Tôi nghĩ rằng chúng ta cần một phương tiện dựa trên máy tính mới.
Cây H là một loại fractal khá đơn giản được tạo thành từ các đường ngang và dọc. Đây là lần lặp lại thứ mười ( Wikipedia lịch sự ):
Bây giờ, hãy tưởng tượng mỗi dòng trong ảnh là một thư mục (thư mục) trong một hệ thống tệp máy tính tiêu chuẩn. Tất cả trừ những dòng nhỏ nhất cắt nhau hai dòng nhỏ hơn mình; hai dòng nhỏ hơn này là thư mục con của dòng lớn hơn. Do đó, đường ngang lớn ở giữa là thư mục mẹ của hai đường thẳng đứng lớn nhất, lần lượt là cha mẹ, ông bà, v.v ... phần còn lại của các dòng trong ảnh.
Thử thách
Viết chương trình lấy số nguyên dương N thông qua stdin hoặc dòng lệnh (hoặc thay thế gần nhất) và tạo một cây thư mục phản ánh lần lặp thứ N của fractal cây H.
Lặp lại đầu tiên (N = 1) là một đường ngang duy nhất. Trong mỗi lần lặp tiếp theo, một tập hợp các dòng dọc hoặc ngang mới được thêm vào cuối của các dòng hiện tại. Vì vậy, đối với N = 2, hai đường thẳng đứng được thêm vào (tạo hình chữ H), cho N = 3 bốn đường kẻ ngang được thêm vào đó, v.v.
Tên của thư mục gốc phải luôn luôn tree
. Tên của các thư mục con phải phù hợp với hướng họ đối với dòng bố mẹ của họ, sử dụng right
, left
, up
và down
.
Vì thư mục gốc luôn là một đường nằm ngang nên nó sẽ luôn có right
và các left
thư mục con. Nhưng hai cái đó sẽ có up
và down
thư mục con, và những cái đó sẽ có right
và left
một lần nữa, v.v.
Các thư mục ở cuối giới hạn lặp sẽ trống.
Thí dụ
Với N = 3, cây thư mục sẽ trông như thế này:
tree
right
up
down
left
up
down
Thông tin bổ sung
- Lý tưởng nhất là
tree
thư mục sẽ bật lên trong cùng thư mục chứa mã nguồn, nhưng không sao nếu nó đi đến một thư mục làm việc. - Bạn có thể cho rằng không có
tree
thư mục tồn tại ở nơi bạn sẽ được tạo. - Bạn có thể cho rằng chương trình của bạn sẽ luôn được chạy trên cùng một hệ điều hành hiện đại chung (Mac / Windows / Linux). Về cơ bản, đừng lo lắng về việc sử dụng trình phân tách tệp không hoạt động trong tất cả các hệ điều hành.
Chấm điểm
Đây là mã golf, vì vậy mã ngắn nhất tính bằng byte sẽ thắng.
tree
luôn luôn phảileft
vàright
thay vìup
vàdown
?