Você deve escrever um programa ou função que use um número inteiro não negativo k
e uma lista inteira classificada L
como entrada e saída ou retorne uma lista suavizada M
.
M
é criado a partir da lista crescente L
, inserindo no máximo k
elementos inteiros, mantendo a lista classificada. Os números inteiros inseridos devem ser escolhidos de maneira que a diferença máxima de avanço M
seja a menor possível. Vamos chamar esse valor menor de "suavidade".
As diferenças diretas da lista -1 3 8 11 15
são 4 5 3 4
e a diferença máxima direta é 5
.
Com 2
inserções, a suavidade de 2 10 15
é 4
e uma saída possível é 2 6 10 11 15
com diferenças diretas 4 4 1 4
.
Entrada
- Um número inteiro não negativo
k
. - Uma lista inteira ascendente
L
com pelo menos 2 elementos.
Resultado
- A lista inteira ascendente
M
. - Se existirem várias respostas corretas, produza exatamente uma delas (qualquer uma é suficiente).
- Sua solução precisa resolver qualquer exemplo de caso de teste em menos de um minuto no meu computador (apenas testarei casos encerrados. Tenho um PC abaixo da média.).
Exemplos
Entrada ( k
, L
) => Uma saída possível e a diferença máxima direta (que não faz parte da saída) entre parênteses
0, 10 20 => 10 20 (10)
2, 1 10 => 1 4 7 10 (3)
2, 2 10 15 => 2 6 10 11 15 (4)
3, 2 10 15 => 2 5 8 10 12 15 (3)
5, 1 21 46 => 1 8 15 21 27 33 39 46 (7)
5, 10 20 25 33 => 10 14 18 20 24 25 29 33 (4)
3, 4 4 6 9 11 11 15 16 25 28 36 37 51 61 => 4 4 6 9 11 11 15 16 22 25 28 36 37 45 51 59 61 (8)
15, 156 888 2015 => 156 269 382 495 608 721 834 888 1001 1114 1227 1340 1453 1566 1679 1792 1905 2015 (113)
8, -399 -35 -13 56 157 => -399 -347 -295 -243 -191 -139 -87 -35 -13 39 56 108 157 (52)
5, 3 3 3 => 3 3 3 3 (0)
Isso é código-golfe, portanto a entrada mais curta vence.
rF<seq>
para descompactar tuplas de dois elementos.u
funcionava de maneira diferente ee
não existia,urGHd
era mais curto do querhd@d1
. Vou colocá-lo na página de truques do Pyth.U
.yvz
falha quandovz = 0
, mashvz
faz o truque.Python 2, 104
Tenta diferentes incrementos máximos
d
, começando em 1 e contando. Preenche as lacunas de cada par(p,x)
de elementos sucessivos,d
preenchendo todos os números do intervalo. SeM
for maior que a cota permitida, é recomendável tentar um valor mais altod
. Caso contrário, retorna uma lista dos elementos adicionados e originais, classificados.Isso faz todos os casos de teste sem demora na minha máquina.
fonte