introduction
Enfin, la société de cinéma finance votre film. Ils vous ont donné un budget maximum et ils ont également défini la durée de votre film.
Vous pouvez maintenant commencer par la pré-production. Vous avez déjà prévu un tas de scènes, mais toutes ne rentreront pas dans le budget et le film deviendrait bien trop long aussi. Vous savez cependant l'importance de chaque scène. Votre objectif est de choisir des scènes, que le film ne va pas être trop cher, trop long et médiocre.
Contribution
Vous obtenez le running time
et budget
le studio a approuvé:
[25, 10]
Vous avez la liste des scènes , y compris running time
, costs
et importance
pour chacun d'eux:
[ [5, 2, 4], [7, 1, 3] ]
Si les tableaux ne fonctionnent pas pour vous, choisissez un autre format d'entrée qui vous convient le mieux. Les temps sont en minutes. Le budget et les coûts sont en millions de devises aléatoires. L'importance va de [1–9]
. Tous les nombres sont des entiers.
Production
Sortez la liste des scènes à inclure dans le film dans la mesure où:
- La somme de
importance
est maximisée. - Les coûts ne dépassent pas le budget.
- La durée se situe dans une plage de ± 5 minutes de la durée de fonctionnement approuvée.
L'ordre des scènes est sans importance et n'a pas besoin d'être conservé.
Vous pouvez sortir une liste de nombres ou un tableau. Votre sortie peut avoir un index zéro ou un:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6
Il peut être possible que plusieurs solutions s'appliquent à une entrée donnée. Il vous suffit d'en trouver un.
Contraintes
- Les scènes ne peuvent pas être raccourcies ni moins chères.
- Chaque scène ne peut être incluse qu'une seule fois.
Exigences
- Votre programme doit se terminer dans le temps de la durée réelle du film.
- L'entrée est acceptée à partir des
STDIN
arguments de ligne de commande, en tant que paramètres de fonction ou de l'équivalent le plus proche. - Vous pouvez écrire un programme ou une fonction. S'il s'agit d'une fonction anonyme, veuillez inclure un exemple de la façon de l'invoquer.
- C'est le code-golf, donc la réponse la plus courte en octets gagne.
- Les failles standard ne sont pas autorisées.
Films
Votre premier film est un documentaire sur une petite ville d'Allemagne appelée Knapsack 1 . Cette ville a été réinstallée en raison de contraintes environnementales dans les années 70:
Movie: [25, 10]
Scenes: [
[5, 2, 4],
[5, 5, 7],
[7, 1, 3],
[8, 5, 3],
[12, 3, 9],
]
Solution possible avec temps d'exécution 22
, budget 10
et importance de 20
:
0, 1, 4
Votre prochain projet est un épisode de 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],
]
Solution possible avec temps d'exécution 40
, budget 24
et importance de 31
:
0, 1, 2, 3, 4
Enfin, voici les scènes d'un film où " M. McConaughey voyage dans une galaxie lointaine pour découvrir que Matt Damon est arrivé en premier. ":
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],
]
Solution possible avec temps d'exécution 169
, budget 165
et importance de 133
:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22
1 Toute ressemblance entre le problème du défi et les paramètres régionaux réels est entièrement une coïncidence.
la source
Haskell, 125 octets
Exemple d'utilisation:
(25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)]
->[0,1,4]
.Comment ça fonctionne:
J'ai trouvé l'astuce de sous-séquence il y a quelque temps dans une réponse de @xnor. C'est plus court que
subsequence
ce qui nécessiteimport Data.List
.la source
Rubis,
172166165 octetsJe devrais vraiment commencer à vérifier si les versions Ruby de mes réponses Python sont plus efficaces avant de publier ces réponses Python. Quoi qu'il en soit, il s'agit de la même approche d'optimisation par force brute qu'auparavant. Tous les conseils sur le golf sont les bienvenus, y compris ceux qui impliquent des techniques d'optimisation réelles.
Non golfé:
la source