Nhờ cộng đồng PPCG, Santa quản lý để sắp xếp các món quà của mình theo đúng thứ tự để di chuyển vào bến tàu vận chuyển. Thật không may, các dấu hiệu bến tàu vận chuyển bị hỏng nên anh ta không biết nơi để đặt tất cả các món quà! Tất cả các món quà được nhóm lại với nhau chứ không phải theo phạm vi của chúng, điều mà Santa thừa nhận sẽ là một ý tưởng tốt hơn.
Bây giờ, đưa ra các món quà theo thứ tự được sắp xếp, xác định tất cả các cấu hình phạm vi tối thiểu có thể sẽ dẫn đến hiện tại theo đúng thứ tự. Đó là, tìm tất cả các cấu hình phạm vi tối thiểu sao cho việc sắp xếp các món quà theo thuật toán trong Thử thách số 5 sẽ không thay đổi thứ tự.
Thử thách
Một cấu hình phạm vi tối thiểu là một danh sách các phạm vi sao cho các phạm vi đó càng nhỏ càng tốt. Nghĩa là, nếu một phạm vi được chỉ định để bao gồm một tập hợp con cụ thể của quà tặng, thì mức tối thiểu và tối đa của phạm vi phải giống với phạm vi của tập hợp con. Nói cách khác, thu nhỏ bất kỳ phạm vi nào trong trang bìa sẽ khiến nó không còn là trang bìa nữa.
Thách thức là tìm tất cả các cấu hình phạm vi tối thiểu có thể áp dụng cho các kích thước hiện tại. Hãy lấy một ví dụ:[3, 1, 2, 5, 4, 7, 6]
Có một trường hợp tầm thường, đó là lấy phạm vi của toàn bộ cấu hình hiện tại. Trong trường hợp này, [[1, 7]]
sẽ là một giải pháp.
Đối với các ví dụ có các phần tử duy nhất, một trường hợp tầm thường khác sẽ là [[3], [1], [2], [5], [4], [7], [6]]
(vì các phạm vi không cần phải được đặt hàng).
Trong ví dụ này, chúng tôi cũng thấy rằng [[1, 3], [4, 7]]
và [[1, 3], [4, 5], [6, 7]]
sẽ làm việc, cũng như [[1, 3], [5], [4], [6, 7]]
và [[1, 3], [4, 5], [7], [6]]
.
Câu trả lời cuối cùng [3, 1, 2, 5, 4, 7, 6]
sẽ là [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
.
Định dạng thông số kỹ thuật
Đầu vào sẽ được cung cấp dưới dạng một danh sách phẳng các số nguyên dương trong phạm vi số được hỗ trợ hợp lý của ngôn ngữ của bạn ở bất kỳ định dạng hợp lý nào. Đầu vào có thể chứa các yếu tố trùng lặp. Đầu ra phải được đưa ra dưới dạng danh sách 3D các số nguyên dương ở bất kỳ định dạng hợp lý nào.
Mỗi phạm vi trong đầu ra của bạn (nằm ở lớp thứ hai) có thể được biểu diễn dưới dạng [min, max]
, [num]
nếu đó là một phạm vi giá trị đơn hoặc là toàn bộ phạm vi, nhưng định dạng đầu ra của bạn phải nhất quán. Vui lòng xác định nếu bạn muốn sử dụng một định dạng đầu ra hợp lý hơi khác nhau.
Các giá trị trùng lặp phải được bao phủ bởi một phạm vi duy nhất trong đầu ra; nghĩa là, không có hai phạm vi trong đầu ra có thể có bất kỳ sự chồng chéo nào.
Giải pháp của bạn có thể trả về các phạm vi theo bất kỳ thứ tự nào và điều này không phải là xác định.
Quy tắc
- Áp dụng sơ hở tiêu chuẩn
- Đây là môn đánh gôn, vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng
- Không có câu trả lời sẽ được chấp nhận
Test Case cho một danh sách với các yếu tố trùng lặp:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Thực hiện tham khảo
Tiêu đề là liên kết.
Lưu ý: Tôi đã lấy cảm hứng cho loạt thử thách này từ Advent Of Code . Tôi không có liên kết với trang web này
Bạn có thể xem danh sách tất cả các thử thách trong chuỗi bằng cách xem phần 'Liên kết' của thử thách đầu tiên tại đây .
Chúc bạn chơi golf vui vẻ!