Introdução
Finalmente, a produtora de filmes está financiando seu filme. Eles forneceram um orçamento máximo e também definiram o tempo de exibição do filme.
Agora você pode começar com a pré-produção. Você já tem um monte de cenas planejadas, mas nem todas caberão no orçamento e o filme também será longo demais. Você sabe a importância de cada cena. Seu objetivo é escolher cenas, para que o filme não seja muito caro, muito longo e medíocre.
Entrada
Você recebe o running time
e budget
o estúdio aprovou:
[25, 10]
Você tem a lista de cenas running time
, incluindo costs
e a importance
de cada uma delas:
[ [5, 2, 4], [7, 1, 3] ]
Se as matrizes não estiverem funcionando para você, escolha outro formato de entrada mais adequado. Os tempos estão em minutos. O orçamento e os custos estão em milhões de moedas aleatórias. A importância é uma gama de [1–9]
. Todos os números são inteiros.
Resultado
Envie a lista de cenas a serem incluídas no filme no assunto em que:
- A soma de
importance
é maximizada. - Os custos não excedem o orçamento.
- A duração está dentro de um intervalo de ± 5 minutos do tempo de execução aprovado.
A ordem das cenas não é importante e não precisa ser preservada.
Você pode gerar uma lista de números ou uma matriz. Sua saída pode ter um índice baseado em zero ou um:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6
Pode ser possível que várias soluções se apliquem a qualquer entrada. Você só precisa encontrar um.
Restrições
- As cenas não podem ser encurtadas nem podem ficar mais baratas.
- Cada cena pode ser incluída apenas uma vez.
Exigências
- Seu programa deve terminar na hora da duração real do filme.
- A entrada é aceita de
STDIN
, argumentos de linha de comando, como parâmetros de função ou do equivalente mais próximo. - Você pode escrever um programa ou uma função. Se for uma função anônima, inclua um exemplo de como invocá-la.
- Este é o código-golfe, e a resposta mais curta em bytes vence.
- As brechas padrão não são permitidas.
Filmes
Seu primeiro filme é um documentário sobre uma pequena cidade na Alemanha chamada Mochila 1 . Esta cidade foi reassentada devido a restrições ambientais nos anos 70:
Movie: [25, 10]
Scenes: [
[5, 2, 4],
[5, 5, 7],
[7, 1, 3],
[8, 5, 3],
[12, 3, 9],
]
Solução possível com tempo de execução 22
, orçamento 10
e uma importância de 20
:
0, 1, 4
Seu próximo projeto é um episódio 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],
]
Solução possível com tempo de execução 40
, orçamento 24
e uma importância de 31
:
0, 1, 2, 3, 4
Finalmente, aqui estão as cenas de um filme em que " M. McConaughey viaja para uma galáxia distante apenas para descobrir que Matt Damon chegou primeiro " .
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],
]
Solução possível com tempo de execução 169
, orçamento 165
e uma importância de 133
:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22
1 Qualquer semelhança entre o problema do desafio e as localidades reais é inteiramente coincidência.
fonte
Haskell, 125 bytes
Exemplo de uso:
(25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)]
->[0,1,4]
.Como funciona:
Encontrei o truque de subsequência há um tempo atrás em uma resposta de @xnor. É mais curto do
subsequence
que o necessárioimport Data.List
.fonte
Ruby,
172166165 bytesEu realmente deveria começar a verificar se as versões Ruby das minhas respostas em Python são mais eficientes antes de postar essas respostas em Python. De qualquer forma, esta é a mesma abordagem de força bruta para otimização de antes. Quaisquer dicas sobre golfe são bem-vindas, incluindo aquelas que envolvem algumas técnicas de otimização reais.
Ungolfed:
fonte