Prima domanda qui, non urlare a me se questa è una sfida duplicata o cattiva.
introduzione
Ho pensato a questa sfida da solo, e sembra essere un buon puzzle di base per i golfisti principianti. Potrebbe anche aiutarmi a decidere quale lingua di golf da imparare.
Sfida
Dato un array di numeri interi che sono minori o uguali a n, emette o restituisce il numero minimo di numeri dall'array che si sommano esattamente n.
Puoi scegliere di scrivere una funzione o un programma completo.
Ingresso
Puoi tranquillamente supporre 0 <= n < 2^31.
Prendi un array o un elenco di qualsiasi tipo ( sono consentiti vectorC ++ o Java LinkedList), insieme a nun parametro facoltativo length, che specifica la lunghezza dell'array.
Puoi anche prendere l'input come una stringa separata da spazio, separata da nuna virgola o da uno spazio:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
se è più facile.
Produzione
Output o restituisce il numero minimo di numeri dall'array che si sommano esattamente n. Utilizzando l'esempio sopra:
1 5 7 3 7 3 6 3 2 6 3,10
Il tuo programma dovrebbe stampare:
2
perché il numero minimo di numeri che si sommano a 10è 2( 7e3 ).
Nel caso in cui non vi sia soluzione, stampare o restituire un valore negativo, 0"Nessuna soluzione" (sebbene ciò non sarebbe intelligente), ∞(come suggerito) o qualsiasi altro valore errato, ad eccezione di una stringa vuota.
Esempio di input e output
Ingresso:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Produzione:
2
3
-1
punteggio
Questo è code-golf, quindi vince il codice più breve in byte.
La risposta migliore sarà accettata a Natale.
falsecasi senza soluzioni?