Nuggets of Code
Es ist eine hypothetische Situation, in der es Freitagabend ist und Sie über die üblichen Golfkameraden eingeladen haben, an Ihrem Lieblingshobby teilzunehmen: Code-Golf. Da dies jedoch eine hirntreibende Aufgabe ist, müssen Sie etwas Gehirnfutter für die Gruppe aufheben, damit Sie so viel wie möglich aus Ihrem Code heraus Golf spielen können.
Heutzutage sind Hühnernuggets die beliebtesten Snacks für jedermann, aber es gibt ein Problem: Es gibt keine einzige Packung, die alle Bedürfnisse abdeckt. Da Sie also bereits in Golfstimmung sind, entscheiden Sie sich für ein Programm, das genau herausfindet, welche Packs Sie kaufen müssen, um die Nugget-Bedürfnisse aller zu decken.
Hühnernugget-Packungsgrößen gibt es überall, und je nachdem, wo Sie auf der Welt leben, ändern sich auch die Standardgrößen. Der nächstgelegene [Ort, an dem Nuggets serviert werden] verfügt jedoch über die folgenden Größen von Nugget-Paketen:
4, 6, 9, 10, 20, 40
Jetzt stellen Sie möglicherweise fest, dass Sie bestimmte Kombinationen von Nuggets nicht bestellen können. Zum Beispiel sind 11Nuggets nicht möglich, da es keine 11genau gleiche Kombination gibt . Sie können jedoch 431 Packung mit 20, 1 Packung mit 10, 1 Packung mit 9und 1 Packung mit 4,
20 + 10 + 9 + 4 = 43 (597)
wo 597wird jeder Term quadriert und addiert (Hinweis: die optimale Lösung hat dies als höchsten Wert) . Es gibt natürlich auch andere Herstellungsmethoden 43, aber wie Sie wissen, wird die Herstellung eines Nuggets umso billiger, je mehr Nuggets es pro Packung gibt. Sie möchten also im Idealfall die geringste Anzahl von Packungen und die größten Mengen kaufen, um Ihre Kosten zu minimieren.
Die Aufgabe
Sie sollten ein Programm oder eine Funktion erstellen, die eine Liste von ganzen Zahlen enthält, die den Anforderungen jeder Person entsprechen. Sie sollten dann die kostengünstigste α- Bestellung berechnen und ausdrucken , um die Hühnernuggets zu kaufen. Die kostengünstigste α- Bestellung ist die Kombination, bei der die Summe der Quadrate jeder Größe die höchste ist. Wenn es absolut keine Möglichkeit , die Nuggets zu kaufen ist perfekt, müssen Sie drucken einen falsy Wert wie , , oder was auch immer in Ihrer Sprache zur Verfügung steht.0FalseImpossible!
Beispiel 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!
Hier ist die Liste der idealen Lösungen für den ersten 400. Hinweis diese nicht formatiert , wie ich würde erwarten , dass bei Ihnen sein, die jeweils tuplein Form (N lots of M).
Regeln
- Keine Standardlücken.
- Keine Verwendung von integrierten Funktionen, die die gesamte Aufgabe oder den größten Teil der Aufgabe erledigen, wie
FrobeniusSolvein Mathematica.
α - Um dies an einem Beispiel zu verdeutlichen, könnten Sie auch 43 machen 4 + 6 + 6 + 9 + 9 + 9 = 43 (319), aber dies wäre nicht optimal und daher eine falsche Ausgabe, da die Summe der Quadrate kleiner ist als die Kombination, die ich in der Einleitung notiert habe. Im Wesentlichen ist eine höhere Quadratsumme = niedrigere Kosten = die kostengünstigste.