Pepitas de código
Es una situación hipotética donde es viernes por la noche, y has invitado a los amigos de golf habituales a participar en tu pasatiempo favorito: el golf de código. Sin embargo, como se trata de una tarea que drena el cerebro, debe recoger algo de alimento para el grupo para que pueda jugar al golf lo más posible de su código.
Ahora, la merienda favorita de todos son las nuggets de pollo, pero hay un problema: no hay un paquete único que cubra las necesidades de todos. Entonces, dado que ya tiene ganas de jugar al golf, decide crear un programa que descubra exactamente qué paquetes debe comprar para poder cubrir las necesidades de Nugget de todos.
Los tamaños de los paquetes de nugget de pollo están por todas partes, y dependiendo de dónde viva en el mundo, los tamaños estándar también cambian. Sin embargo, el [lugar que sirve pepitas] más cercano almacena los siguientes tamaños de paquetes de pepitas:
4, 6, 9, 10, 20, 40
Ahora puede notar que no puede ordenar ciertas combinaciones de pepitas. Por ejemplo, las 11
pepitas no son posibles, ya que no existe una combinación que sea 11
exactamente igual . Sin embargo, puede 43
obtener 1 paquete de 20
, 1 paquete de 10
, 1 paquete de 9
y 1 paquete de 4
,
20 + 10 + 9 + 4 = 43 (597)
donde 597
se cuadra cada término y se suma (sugerencia: la solución óptima tiene este como el valor más alto) . Por supuesto, hay otras formas de hacer 43
, pero como sabes, cuantas más pepitas por paquete, más barato se vuelve por pepita. Por lo tanto, lo ideal es comprar el menor número de paquetes y en las mayores cantidades para minimizar su costo.
La tarea
Debe crear un programa o función que tome una lista de enteros correspondientes a los requisitos de cada persona. Luego debe calcular e imprimir la orden α más rentable para comprar las pepitas de pollo. El orden α más rentable es la combinación por la cual la suma de los cuadrados de cada cantidad es la más alta. Si no hay absolutamente ninguna manera de comprar las pepitas perfectamente, debe imprimir un valor Falsy tales como 0
, False
, Impossible!
, o lo que está disponible en su idioma.
Ejemplo de E / S:
[2 7 12 4 15 3] => [20 10 9 4]
1, 1, 2, 1 => False
6 5 5 5 5 5 9 => 40
[6, 4, 9] => 9 10
1 => 0
199 => 40, 40, 40, 40, 20, 10, 9
2 => Impossible!
Aquí está la lista de soluciones ideales para los primeros 400. Tenga en cuenta que estos no están formateados como esperaría que fueran los suyos, cada uno tuple
tiene la forma (N lots of M)
.
Reglas
- No hay lagunas estándar.
- No se utilizan funciones integradas que realizan la totalidad o la mayoría de la tarea, como
FrobeniusSolve
en Mathematica.
α: para aclarar esto con un ejemplo, también podría hacer 43 haciendo 4 + 6 + 6 + 9 + 9 + 9 = 43 (319)
, pero esto no sería óptimo y, por lo tanto, una salida incorrecta, ya que la suma de los cuadrados es menor que la combinación que anoté en la introducción. Esencialmente, mayor suma de cuadrados = menor costo = más rentable.