Trong thử thách này, bạn cần phân vùng một danh sách, trong đó các phân vùng có kích thước tối đa, kích thước tối thiểu và kích thước ưa thích. Tôi sẽ sử dụng ký hiệu (min,pref,max)
để chỉ ra kích thước trong thử thách này.
Đối với những người không quen thuộc với phân vùng, danh sách sau đây đã được phân vùng thành các phần của 3:
[0..9] -> [[0,1,2],[3,4,5],[6,7,8]]
Khi danh sách không chia hết, bạn cần các phân vùng càng gần với kích thước ưa thích càng tốt : [0..10], (2,4,5) -> [[0,1,2,3],[4,5,6],[7,8,9]]
. Phân vùng này được ưa thích hơn [[0,1,2,3],[4,5,6,7],[8,9]]
, mặc dù cái sau có nhiều độ dài ưa thích hơn. Chính thức, chúng ta cần giảm thiểu tổng số (partitionLength-preferredSize)^2
cho mỗi phân vùng.
Thứ tự của độ dài phân vùng không quan trọng: Cho [0..5], (2,3,3)
, hoặc [[0,1,2],[3,4]]
hoặc [[0,1],[2,3,4]]
hoạt động. Nếu không có phân vùng nào có thể, trả về một mảng trống : [0..7], (4,4,5) -> []
.
Bạn có thể giả sử rằng 1<=min<=pref<=max
, và mảng được truyền cho bạn là một mảng số nguyên không trống. Mảng sẽ luôn là đối số đầu tiên. Bạn có thể chấp nhận min, max và pref theo bất kỳ thứ tự nào và dưới dạng một tuple hoặc dưới dạng các đối số riêng biệt.
Chương trình của bạn phải chạy trong vài giây. Về cơ bản, không được phép lặp qua mọi kích thước phân vùng có thể trong giới hạn.
Các trường hợp thử nghiệm:
[1], (1,3,4) -> [[1]]
[100], (1,2,3) -> [[100]]
[1,2], (1,1,2) -> [[1],[2]]
[1,2], (1,2,2) -> [[1,2]]
[1,2], (1,3,3) -> [[1,2]]
[1,2,3], (1,2,3) -> [[1,2],[3]] or [[1,2,3]]
[1,2,3,4], (1,3,4) -> [[1,2,3,4]]
[1,2,3,4,5], (3,3,4) -> []
[1,2,3,4,5], (2,2,2) -> []
[1,2,3,4,5], (3,3,5) -> [[1,2,3,4,5]]
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49], (2,6,6) -> [[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24],[25,26,27,28,29],[30,31,32,33,34],[35,36,37,38,39],[40,41,42,43,44],[45,46,47,48,49]]
Đây là một môn đánh gôn , vì vậy hãy nhắm đến càng ít byte càng tốt trong ngôn ngữ yêu thích của bạn!
[a..b]
bao gồma
và loại trừb
, đúng không?