Dieser Tweet listet die möglichen Bestellungen für Wings eines chinesischen Restaurants 1 auf :
Wenn ich Pizza bestelle, berechne ich normalerweise, welche Größe mir das beste Pizza-Preis-Verhältnis gibt, was eine einfache Berechnung ist. Allerdings ist es nicht so einfach, den Preis für eine Bestellung in diesem Restaurant zu minimieren. Deshalb möchte ich gerne auf meine nächste Bestellung dort vorbereitet sein.
Herausforderung
Wenn eine ganze Zahl größer oder gleich , müssen Sie eine mögliche Bestellung zurückgeben, die den Preis (den insgesamt günstigsten Preis) und die Anzahl der Deals minimiert.
Beispiel
Wenn ich Wings bestellen würde , würde das beste Schnäppchen . Es gibt jedoch mehrere Bestellungen, die diesen Betrag kosten, nämlich:
[50,50],[25,25,50],[25,25,25,25]
Da die erste Bestellung die geringste Anzahl von Deals ( ) verwendet, ist das Ergebnis .[50,50]
Regeln
- Die Eingabe wird eine Ganzzahl
- Die Ausgabe ist eine Liste / ein Array / ... von Auftragsgrößen, die sich zu summieren und den Auftragspreis minimieren
- Sie können alle möglichen Bestellungen zurückschicken
Testfälle
4 -> [4] (4.55)
23 -> [23] (26.10)
24 -> [6,18],[9,15],[12,12] (27.20)
31 -> [6,25] (34.60)
32 -> [4,28],[6,26],[7,25] (35.75)
33 -> [4,29],[5,28],[6,27],[7,26],[8,25] (36.90)
34 -> [6,28],[9,25] (38.00)
35 -> [35] (39.15)
125 -> [125] (139.00)
200 -> [25,50,125] (222.40)
201 -> [26,50,125] (223.55)
250 -> [125,125] (278.00)
251 -> [26,50,50,125] (279.15)
418 -> [15,28,125,125,125],[18,25,125,125,125] (465.20)
1001 -> [26,50,50,125,125,125,125,125,125,125] (1113.15)
12345 -> [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125] (13728.10)
Hinweis: Diese Testfälle Liste alle möglichen Ausgänge einschließlich des Preises, sind Sie nur zur Ausgabe benötigt ein und Sie sind nicht zur Ausgabe benötigt der Preis!
1: Sie können die Daten als CSV finden hier .
Antworten:
JavaScript (ES6), 123 Byte
Gibt die Bestellung als durch Leerzeichen getrennte Zeichenfolge zurück.
Probieren Sie es online!
Wie?
quelle
JavaScript (Node.js) ,
112108106105 BytesProbieren Sie es online!
Optimiert aus Arnauld's Antwort
Unterschiede
467 Bytes gespeichert)quelle
Retina 0,8,2 ,
160,155 BytesIn Unary konvertieren.
Wiederholen, bis keine Deals mehr gekauft werden können.
Finden Sie eine Möglichkeit zum Kauf von Deals und erfassen und duplizieren Sie einen der Deals.
Deals werden zu folgenden Konditionen gekauft:
Kaufen Sie 80 Flügel, wenn Sie 0, 6, 9, 12, 15, 18, 25 oder 28 Flügel haben.
Kaufen Sie 70 Flügel, wenn das alles ist, was wir brauchen.
Kauf 9 Flügel, wenn das 15 oder 40 Flügel lässt.
Kaufen Sie 30, 35, 40 oder 45 Flügel, wenn das alles ist, was wir brauchen.
Kaufen Sie 26, 27, 28 oder 29 Flügel, wenn das alles ist, was wir brauchen.
Kaufen Sie 4 bis 23 Flügel, wenn das alles ist, was wir brauchen.
Kaufen Sie 125, 50 oder 25 Flügel, wenn wir können und wenn wir noch genau mehr Flügel kaufen können. Beachten Sie, dass wir diese Optionen am Ende des Wechsels haben, damit die genauen Einkäufe zuerst getestet werden.
quelle