Mọi người đều thích danh sách lồng nhau! Tuy nhiên, đôi khi thật khó để tạo một danh sách lồng nhau. Bạn phải quyết định nếu bạn muốn lồng nó sâu hơn, hoặc nếu bạn cần lồng nó nông hơn. Vì vậy, đối với thử thách của bạn, bạn phải "Tự động" một danh sách. Để tự động xác định danh sách, hãy so sánh mọi cặp mục trong danh sách.
Nếu mục thứ hai nhỏ hơn, hãy tách hai phần tử bằng cách chèn dấu đóng và mở giữa chúng, như sau:
} { {2 , 1}
Ví dụ,
{2, 1}
trở thành{2}, {1}
và{3, 2, 1}
trở thành{3}, {2}, {1}
Nếu mục thứ hai là như nhau, thì không thay đổi gì. Ví dụ,
{1, 1, 1}
giữ nguyên, và{2, 1, 1, 1}
sẽ trở thành{2}, {1, 1, 1}
.Nếu mục thứ hai lớn hơn, thì hãy lồng mọi mục sau sâu hơn một cấp. Ví dụ,
{1, 2}
sẽ trở thành{1, {2}}
và{1, 2, 3}
sẽ trở thành{1, {2, {3}}}
Các thách thức
Bạn phải viết một chương trình hoặc hàm nhận danh sách các số và trả về cùng một danh sách sau khi được tự động xác định. Lấy đầu vào này ở định dạng danh sách gốc ngôn ngữ của bạn (hoặc thay thế gần nhất) hoặc dưới dạng chuỗi. Bạn không phải sử dụng dấu ngoặc nhọn như tôi đã làm trong ví dụ của mình. Bạn có thể sử dụng bất kỳ loại dấu ngoặc nào là tự nhiên nhất trong ngôn ngữ của bạn, miễn là điều này phù hợp. Bạn có thể giả định rằng danh sách sẽ chỉ chứa số nguyên. Bạn cũng có thể giả sử danh sách sẽ có ít nhất 2 số trong đó. Đây là một số mẫu IO:
{1, 3, 2} --> {1, {3}, {2}}
{1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, {5, {6}}}}}}
{6, 5, 4, 3, 2, 1} --> {6}, {5}, {4}, {3}, {2}, {1}
{7, 3, 3, 2, 6, 4} --> {7}, {3, 3}, {2, {6}, {4}}
{7, 3, 1, -8, 4, 8, 2, -9, 2, 8} --> {7}, {3}, {1}, {-8, {4, {8}, {2}, {-9, {2, {8}}}}}
Các sơ hở tiêu chuẩn được áp dụng và câu trả lời ngắn nhất tính theo byte sẽ thắng!
[-100, 100]
nhưng tôi không có kế hoạch đưa ra đầu vào khổng lồ.
{2, 1}
trở thành {2}, {1}
" thế nào là cao hơn một cấp ? Một cấp độ cao hơn sẽ được {2}, 1
. Những gì bạn có là cùng cấp độ.