Một thử thách đơn giản cho buổi tối thứ Hai của bạn (tốt, hoặc sáng thứ Ba ở nửa kia của thế giới ...)
Bạn được cung cấp dưới dạng đầu vào một mảng các số nguyên dương lồng nhau, có khả năng rách nát:
[1, [[2, 3, [[4], 5], 6, [7, 8]], 9, [10, [[[11]]]], 12, 13], 14]
Nhiệm vụ của bạn là xác định độ sâu của nó, độ sâu lồng nhau lớn nhất của bất kỳ số nguyên nào trong danh sách. Trong trường hợp này, độ sâu của 11
là 6
, đó là lớn nhất.
Bạn có thể cho rằng không có mảng nào sẽ trống.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Đầu vào có thể được lấy trong bất kỳ danh sách thuận tiện hoặc định dạng chuỗi nào hỗ trợ các mảng không phải hình chữ nhật (với các mảng lồng nhau có độ sâu khác nhau), miễn là thông tin thực tế không được xử lý trước.
Bạn không được sử dụng bất kỳ phần dựng sẵn nào liên quan đến hình dạng của mảng (bao gồm cả phần dựng sẵn giải quyết thách thức này, giúp bạn có được kích thước của một mảng lồng nhau). Ngoại lệ duy nhất này là nhận được chiều dài của một mảng.
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
[1] -> 1
[1, 2, 3] -> 1
[[1, 2, 3]] -> 2
[3, [3, [3], 3], 3] -> 3
[[[[1], 2], [3, [4]]]] -> 4
[1, [[3]], [5, 6], [[[[8]]]], 1] -> 5
[1, [[2, 3, [[4], 5], 6, [7, 8]], 9, [10, [[[11]]]], 12, 13], 14] -> 6
[[[[[[[3]]]]]]] -> 7
≡
là nguyên thủy tích hợp sẵn của APL cho chính xác điều này .
\
trong các đầu vào không? EDIT: nevermind chỉ thử nó như thế. Điều đó thậm chí không hoạt động. Tôi không thể sử dụng CMD args?