Einführung
Schließlich finanziert die Filmfirma Ihren Film. Sie haben Ihnen ein maximales Budget gegeben und sie legen auch die Laufzeit Ihres Films fest.
Jetzt können Sie mit der Vorproduktion beginnen. Sie haben bereits eine Reihe von Szenen geplant, aber nicht alle passen in das Budget und der Film würde auch viel zu lange dauern. Sie kennen jedoch die Wichtigkeit jeder Szene. Ihr Ziel ist es, Szenen auszuwählen, damit der Film nicht zu teuer, zu lang und mittelmäßig wird.
Eingang
Du bekommst das running time
und das hat budget
das Studio genehmigt:
[25, 10]
Sie haben die Liste der Szenen einschließlich running time
, costs
und die importance
für jeden von ihnen:
[ [5, 2, 4], [7, 1, 3] ]
Wenn Arrays bei Ihnen nicht funktionieren, wählen Sie ein anderes Eingabeformat, das am besten zu Ihnen passt. Zeiten sind in Minuten. Budget und Kosten werden in Millionen zufälliger Währung angegeben. Die Wichtigkeit liegt in einem Bereich von [1–9]
. Alle Zahlen sind ganze Zahlen.
Ausgabe
Geben Sie die Liste der Szenen aus, die in den Film aufgenommen werden sollen, wenn:
- Die Summe von
importance
wird maximiert. - Die Kosten überschreiten nicht das Budget.
- Die Länge liegt innerhalb eines Bereichs von ± 5 Minuten von der genehmigten Laufzeit.
Die Reihenfolge der Szenen ist unwichtig und muss nicht beibehalten werden.
Sie können eine Liste von Zahlen oder ein Array ausgeben. Ihre Ausgabe kann einen auf Null oder Eins basierenden Index haben:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6
Es ist möglich, dass mehrere Lösungen für eine bestimmte Eingabe gelten. Sie müssen nur einen finden.
Einschränkungen
- Szenen können nicht gekürzt oder billiger werden.
- Jede Szene kann nur einmal enthalten sein.
Bedarf
- Ihr Programm muss zum Zeitpunkt der tatsächlichen Länge des Films beendet sein.
- Eingaben werden von
STDIN
Befehlszeilenargumenten als Funktionsparameter oder von der nächstgelegenen Entsprechung akzeptiert . - Sie können ein Programm oder eine Funktion schreiben. Wenn es sich um eine anonyme Funktion handelt, geben Sie bitte ein Beispiel für den Aufruf an.
- Dies ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.
- Standardlücken sind nicht zulässig.
Filme
Ihr erster Film ist eine Dokumentation über eine kleine Stadt in Deutschland namens Knapsack 1 . Diese Stadt wurde in den 70er Jahren aus Umweltschutzgründen umgesiedelt:
Movie: [25, 10]
Scenes: [
[5, 2, 4],
[5, 5, 7],
[7, 1, 3],
[8, 5, 3],
[12, 3, 9],
]
Mögliche Lösung mit Laufzeit 22
, Budget 10
und einer Bedeutung von 20
:
0, 1, 4
Dein nächstes Projekt ist eine Folge von Fargo :
Movie: [45, 25]
Scenes: [
[2, 1, 1],
[8, 5, 9],
[10, 6, 8],
[10, 3, 6],
[10, 9, 7],
[11, 4, 3],
[19, 5, 6],
]
Mögliche Lösung mit Laufzeit 40
, Budget 24
und einer Bedeutung von 31
:
0, 1, 2, 3, 4
Zum Schluss hier die Szenen für einen Film, in dem " M. McConaughey zu einer fernen Galaxie reist, um herauszufinden, dass Matt Damon zuerst dort angekommen ist ":
Movie: [169, 165]
Scenes: [
[5, 8, 2],
[5, 20, 6],
[6, 5, 8],
[6, 10, 3],
[7, 6, 5],
[7, 9, 4],
[7, 8, 9],
[7, 9, 5],
[8, 6, 8],
[8, 8, 8],
[8, 5, 6],
[9, 5, 6],
[9, 8, 5],
[9, 4, 6],
[9, 6, 9],
[9, 8, 6],
[9, 7, 8],
[10, 22, 4],
[10, 12, 9],
[11, 7, 9],
[11, 9, 8],
[12, 11, 5],
[15, 21, 7],
]
Mögliche Lösung mit Laufzeit 169
, Budget 165
und einer Bedeutung von 133
:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22
1 Jegliche Ähnlichkeit zwischen dem Problem der Herausforderung und den tatsächlichen Schauplätzen ist völlig zufällig.
quelle
Haskell, 125 Bytes
Anwendungsbeispiel:
(25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)]
->[0,1,4]
.Wie es funktioniert:
Ich habe den Subsequenztrick vor einiger Zeit in einer Antwort von @xnor gefunden. Es ist kürzer als
subsequence
nötigimport Data.List
.quelle
Ruby,
172166165 BytesIch sollte wirklich prüfen, ob die Ruby-Versionen meiner Python-Antworten besser sind, bevor ich diese Python-Antworten veröffentliche. In jedem Fall ist dies derselbe brachiale Optimierungsansatz wie zuvor. Alle Tipps zum Golfen sind willkommen, einschließlich solcher, die einige aktuelle Optimierungstechniken beinhalten.
Ungolfed:
quelle