Pepite di codice
È una situazione ipotetica in cui è venerdì sera e hai invitato i soliti compagni di golf a partecipare al tuo hobby preferito: il golf a codice. Tuttavia, poiché si tratta di un compito così drenante per il cervello, è necessario raccogliere del cibo per il cervello per il gruppo in modo da poter giocare a golf il più possibile con il proprio codice.
Ora, la merenda preferita da tutti sono le crocchette di pollo, ma c'è un problema: non esiste un unico pacchetto che copra le esigenze di tutti. Quindi, poiché sei già in vena di golf, decidi di creare un programma che capisca esattamente quali pacchetti devi acquistare per essere in grado di coprire le esigenze di tutti i Nugget.
Le dimensioni del pacchetto di crocchette di pollo sono ovunque e, a seconda di dove vivi nel mondo, cambiano anche le dimensioni standard. Tuttavia, il [luogo che serve le pepite] più vicino contiene le seguenti dimensioni di pacchetti di pepite :
4, 6, 9, 10, 20, 40
Ora potresti notare che non puoi ordinare determinate combinazioni di pepite. Ad esempio, i 11nugget non sono possibili, poiché non esiste una combinazione uguale a 11esattamente. Tuttavia, puoi ottenere 43ottenendo 1 pacchetto di 20, 1 pacchetto di 10, 1 pacchetto di 9e 1 pacchetto di 4,
20 + 10 + 9 + 4 = 43 (597)
dove 597ogni termine viene quadrato e sommato insieme (suggerimento: la soluzione ottimale ha questo come valore più alto) . Esistono ovviamente altri modi di fare 43, ma come sai, più pepite per pacco, più economico diventa per pepita. Quindi, si desidera acquistare idealmente il minor numero di confezioni e nelle quantità maggiori per ridurre al minimo i costi.
L'obiettivo
È necessario creare un programma o una funzione che accetta un elenco di numeri interi corrispondenti ai requisiti di ciascuna persona. Dovresti quindi calcolare e stampare l' ordine α più conveniente per acquistare le crocchette di pollo. L' ordine α più conveniente è la combinazione con la quale la somma dei quadrati di ogni quantità è la più alta. Se non v'è assolutamente alcun modo per acquistare perfettamente le pepite, è necessario stampare un valore falsy come 0, False, Impossible!, o tutto ciò che è disponibile nella tua lingua.
Esempio I / O:
[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!
Ecco l'elenco delle soluzioni ideali per i primi 400. Nota che questi non sono formattati come mi aspetto che il tuo sia, ognuno tupleè nel modulo (N lots of M).
Regole
- Nessuna scappatoia standard.
- Nessun uso di funzioni integrate che svolgono tutto o la maggior parte dell'attività, come
FrobeniusSolvein Mathematica.
α - Per chiarire questo con un esempio, potresti anche fare 43 facendo 4 + 6 + 6 + 9 + 9 + 9 = 43 (319), ma questo non sarebbe ottimale, e quindi un output errato, poiché la somma dei quadrati è inferiore alla combinazione che ho notato nell'introduzione. In sostanza, una maggiore somma di quadrati = costo inferiore = massima efficienza.