En este desafío, debe particionar una lista, donde las particiones tienen un tamaño máximo, un tamaño mínimo y un tamaño preferido. Usaré la notación (min,pref,max)
para indicar los tamaños en este desafío.
Para aquellos que no están familiarizados con la partición, la siguiente lista se ha dividido en partes de 3:
[0..9] -> [[0,1,2],[3,4,5],[6,7,8]]
Cuando la lista no es divisible, necesita las particiones a estar tan cerca del tamaño preferido como sea posible: [0..10], (2,4,5) -> [[0,1,2,3],[4,5,6],[7,8,9]]
. Es preferible esta partición [[0,1,2,3],[4,5,6,7],[8,9]]
, aunque esta última tenga más de la longitud preferida. Formalmente, necesitamos minimizar la suma de (partitionLength-preferredSize)^2
cada partición.
El orden de las longitudes de las particiones no importa: para [0..5], (2,3,3)
, [[0,1,2],[3,4]]
o [[0,1],[2,3,4]]
funciona. Si ninguna partición es posible, devolver una matriz vacía: [0..7], (4,4,5) -> []
.
Puede suponer eso 1<=min<=pref<=max
, y que la matriz que le pasó es una matriz no entera de enteros. La matriz siempre será el primer argumento. Puede aceptar min, max y pref en cualquier orden y como una tupla o como argumentos separados.
Su programa debe ejecutarse en unos segundos. Básicamente, no se permite iterar a través de todos los tamaños de partición posibles dentro de los límites.
Casos de prueba:
[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]]
Este es un código de golf , ¡así que apunte a la menor cantidad de bytes posible en su idioma favorito!
[a..b]
incluyea
y excluyeb
, ¿correcto?