Bei dieser Herausforderung erhalten Sie eine durch Kommas getrennte Liste von Gewichten als Eingabe, z
1,3,4,7,8,11
Und Sie müssen die kleinste Menge an Gewichten ausgeben, die zu diesem Satz hinzugefügt werden können. Zum Beispiel wäre die Ausgabe für diesen Satz
1,3,7
Weil Sie all diese Gewichte mit nur diesen drei darstellen könnten:
1 = 1
3 = 3
1+3 = 4
7 = 7
1+7 = 8
1+3+7 = 11
Es kann mehr als eine Lösung geben. Zum Beispiel Ihre Lösung für die Eingabe 1,2könnte sein , 1,1oder 1,2. Solange die Mindestanzahl an Gewichten gefunden wird, die den Eingabesatz darstellen können, ist dies eine gültige Lösung.
Gewichte dürfen nicht mehr als einmal verwendet werden. Wenn Sie eine zweimal verwenden müssen, müssen Sie sie zweimal ausgeben. Dies ist beispielsweise 2,3keine gültige Lösung für, 2,3,5,7da Sie das nicht 2zweimal verwenden können 2+2+3=7.
Die Eingabe enthält garantiert keine doppelten Nummern.
Dies ist Code-Golf, so dass der kürzeste Code nach Zeichenanzahl gewinnt.
Der Netzwerkzugriff ist verboten (also keine Ihrer "cleveren" wgetLösungen @JohannesKuhn Husten Husten );)
Einfachste Fälle:
1,5,6,9,10,14,15 => 1,5,9
7,14,15,21,22,29 => 7,14,15
4,5,6,7,9,10,11,12,13,15,16,18 => 4,5,6,7
2,3,5,7 => 2,2,3 or 2,3,7
Und einige schwierigere:
10,16,19,23,26,27,30,37,41,43,44,46,50,53,57,60,61,64,68,71,77,80,84,87
=> 3,7,16,27,34
20,30,36,50,56,63,66,73,79,86
=> 7,13,23,43
27,35,44,46,51,53,55,60,63,64,68,69,72,77,79,81,86,88,90,95,97,105,106,114,123,132
=> 9,18,26,37,42
7,7,7,8oben) zulässt , was die Komplexität um ein Vielfaches erhöht.
nEingangsgewichte gibt und mdas größte ist, alle Teilsequenzen von aufzählen (1..m)und für jede Teilsequenz jede Kombination von 1 und nInstanzen von jedem aufzählen Element der Sequenz.)