Lấy cảm hứng từ A014486 .
Thử thách
Cho một đầu vào số nguyên trong cơ sở 10, xây dựng một đại diện cho rừng nhị phân tương ứng với đầu vào. Các đại diện bao gồm, nhưng không giới hạn, các mảng và chuỗi lồng nhau.
Làm sao?
Chuyển đổi đầu vào thành nhị phân. 1
s đại diện cho các nhánh và 0
s đại diện cho lá.
Để làm cho điều này dễ hiểu hơn, hãy sử dụng 834
(1101000010 ở dạng nhị phân) làm ví dụ.
Chúng tôi bắt đầu với chữ số đầu tiên. Chữ số đầu tiên là a 1
, vì vậy chúng tôi vẽ các nhánh:
\ / 1
hoặc như một mảng, {{1}}
Chữ số tiếp theo là 1
, vì vậy chúng tôi vẽ thêm các nhánh (chúng tôi đi từ trái sang phải):
\ / 1 \ / 1
hoặc như một mảng, {{1, {1}}}
Chữ số tiếp theo là 0
, vì vậy chúng tôi đặt một chiếc lá:
0 \ / 1 \ / 1
hoặc như một mảng, {{1, {1, 0}}}
Chữ số tiếp theo là a 1
, vì vậy chúng tôi đặt một nhánh:
\ / 0 1 \ / 1 \ / 1
hoặc như một mảng, {{1, {1, 0, {1}}}}
Lặp lại quá trình, chúng ta thu được cây sau chữ số thứ 8:
0 0 \ / 0 1 \ / 1 0 \ / 1
hoặc như một mảng, {{1, {1, 0, {1, 0, 0}}, 0}}
Đối với các chữ số còn lại, chúng tôi vẽ thêm cây:
Chữ số thứ 9 là a 0
, vì vậy chúng tôi đặt một chiếc lá (aww, đó là một chồi non!)
0 0 \ / 0 1 \ / 1 0 \ / 1 0
hoặc như một mảng, {{1, {1, 0, {1, 0, 0}}, 0}, 0}
Khi chúng tôi sử dụng tất cả các chữ số, chúng tôi kết thúc bằng:
0 0 \ / 0 1 \ / 1 0 0 \ / \ / 1 0 1
hoặc như một mảng, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
Điều đó có vẻ kỳ lạ, vì vậy chúng tôi đệm số 0 để hoàn thành cây:
0 0 \ / 0 1 \ / 1 0 0 0 \ / \ / 1 0 1
hoặc như một mảng, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
Lưu ý rằng việc làm phẳng mảng mang lại số gốc ở dạng nhị phân, nhưng với số 0 được đệm.
Tiêu chí
- Đầu ra phải hiển thị rõ ràng sự phân tách của cây và nhánh (nếu nó không phải là một mảng lồng nhau, vui lòng giải thích định dạng đầu ra của bạn).
- Trích xuất tất cả các chữ số từ đầu ra phải giống hệt với biểu diễn nhị phân của đầu vào (với số 0 được đệm từ quá trình trên).
Các trường hợp thử nghiệm
Đầu ra có thể khác nhau miễn là đáp ứng các tiêu chí.
0 -> {0} 1 -> {{1, 0, 0}} 44 -> {{1, 0, {1, {1, 0, 0}, 0}}} 63 -> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}} 404 -> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}}}} 1337 -> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
Chấm điểm
Đây là mã golf , vì vậy byte thấp nhất sẽ thắng!