Erste Frage hier, schrei mich nicht an, wenn dies ein Duplikat oder eine schlechte Herausforderung ist.
Einführung
Ich habe mir diese Herausforderung selbst überlegt und es scheint ein gutes Grundrätsel für Anfänger im Code-Golfen zu sein. Es könnte mir auch bei der Entscheidung helfen, welche Code-Golf-Sprache ich lernen möchte.
Herausforderung
Bei einem Array von ganzen Zahlen, die kleiner oder gleich sind n
, wird die minimale Anzahl von Zahlen aus dem Array ausgegeben oder zurückgegeben, die sich genau summieren n
.
Sie können wählen, ob Sie eine Funktion oder ein vollständiges Programm schreiben möchten.
Eingang
Sie können davon ausgehen, sicher 0 <= n < 2^31
.
Nehmen Sie ein Array oder eine Liste jeder Art ( vector
für C ++ oder Java LinkedList
sind zulässig) n
sowie einen optionalen Parameter length
, der die Länge des Arrays angibt.
Sie können die Eingabe auch als durch Leerzeichen getrennte Zeichenfolge verwenden, die n
durch ein Komma oder ein Leerzeichen voneinander getrennt ist:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
wenn es einfacher ist.
Ausgabe
Ausgabe oder Rückgabe der Mindestanzahl von Zahlen aus dem Array, die sich genau summieren n
. Mit dem obigen Beispiel:
1 5 7 3 7 3 6 3 2 6 3,10
Ihr Programm sollte drucken:
2
weil die minimale Anzahl von Zahlen , die Summe bis zu 10
ist 2
( 7
und 3
).
Für den Fall, dass es keine Lösung gibt, drucken oder geben Sie entweder ein Negativ, 0
"Keine Lösung" (obwohl dies nicht sinnvoll wäre) ∞
(wie vorgeschlagen) oder einen anderen falschen Wert mit Ausnahme einer leeren Zeichenfolge zurück.
Beispiel für Ein- und Ausgabe
Eingang:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Ausgabe:
2
3
-1
Wertung
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
Die Top-Antwort wird zu Weihnachten angenommen.
false
für Fälle ohne Lösungen ausgeben ?