Parece que qualquer Modificação Simples de deltas usando uma função consistente quase sempre pode ser feita de outra maneira mais curta , Dennis . Assim, a única solução que posso imaginar para tornar isso mais difícil é introduzir algum tipo de função inconsistente.
Ordenação.
Sua tarefa é pegar uma matriz de números inteiros, classificar seus deltas e recompilar para fornecer a nova matriz de números inteiros.
POR EXEMPLO.
Para a entrada:
1 5 -3 2 9
Obtenha os seguintes deltas:
4 -8 5 7
Em seguida, classifique estes deltas, produzindo:
-8 4 5 7
E reaplicá-los, o que dá:
1 -7 -3 2 9
Entrada / Saída
Você receberá uma lista / matriz / tabela / tupla / pilha / etc. de números inteiros assinados como entrada por qualquer método de entrada padrão.
Você deve imprimir os dados modificados novamente de qualquer forma aceitável, seguindo o método de classificação delta acima.
Você receberá N entradas 0 < N < 10
onde cada número se enquadra dentro da faixa-1000 < X < 1000
Casos de teste
1 5 -3 2 9 -> 1 -7 -3 2 9
-5 -1 -6 5 8 -> -5 -10 -7 -3 8
-8 1 -7 1 1 -> -8 -16 -16 -8 1
8 -9 3 0 -2 -> 8 -9 -12 -14 -2
-5 -2 -5 5 0 -> -5 -10 -13 -10 0
-1 9 -1 -7 9 -> -1 -11 -17 -7 9
Notas
- Como mencionado acima, você sempre receberá pelo menos 1 entrada e não mais que 9.
- O primeiro e o último número da sua saída sempre corresponderão ao da entrada.
- Somente saída de entrada padrão é aceita
- Aplicam-se brechas padrão
- Isso é código-golfe , então a menor contagem de bytes vence!
- Diverta-se!
Respostas:
Geléia , 7 bytes
Experimente online!
Como funciona
fonte
MATL , 8 bytes
Experimente online!
fonte
Mathematica, 40 bytes
Função pura pegando uma lista de (qualquer coisa) como entrada e retornando uma lista.
FoldList[Plus
começa com um número (nesse caso,#&@@#
o primeiro elemento da entrada) e adiciona repetidamente elementos da lista auto-explicativaSort@Differences@#
. Isso imita o comportamento do built-inAccumulate
, mas o primeiro número precisaria ser anexado à lista de diferenças manualmente, o que aumenta a contagem de bytes (tanto quanto eu sei).fonte
05AB1E , 9 bytes
-4 graças a Emigna
Experimente online!
fonte
¬=s¥{vy+=
Python 2, 92 bytes
fonte
Haskell, 59 Bytes
Demolir:
fonte
scanl(+)a$sort...
JavaScript (ES6), 68 bytes
No JavaScript, verifica-se ser mais golfista para calcular os deltas inversos de uma matriz . Eles são classificados em ordem decrescente e subtraídos cumulativamente do primeiro elemento.
fonte
Python 2 ,
90 bytes84 bytes
Economizou 6 bytes ao usar lambda. Graças a ovs!
Experimente online!
Quebrando o código,
Feliz codificação!
fonte
lambda x:[sum(sorted(map(int.__sub__,x[1:],x[:-1]))[:i])+x[0]for i in range(len(x))]
JavaScript (ES6), 93 bytes
fonte
Python 2 , 97 bytes
Experimente online!
fonte
[p[i+1]-p[i]for i in range(len(p)-1)]
Pitão, 11 bytes
Isso apenas faz o óbvio descrito na declaração.
Experimente Online
Sugestões para mais boas-vindas no golfe.
fonte
Julia 0,5 , 30 bytes
Experimente online!
fonte
PHP, 89 bytes
Execute assim:
Explicação
fonte
Python 2 com numpy,
6756 bytesDeixe numpy calcular os deltas, classificá-los, preceder o primeiro elemento e deixe numpy calcular as somas cumulativas. Muito barato?
fonte
from numpy import*
en.cumsum
paracumsum
en.diff
paradiff
Perl 6 , 31 bytes
Tente
Expandido:
fonte
Lote, 197 bytes
sort
não classifica numericamente, então inclino todas as diferenças em 5000.fonte
bash + classificação, 102 bytes
sh + sort + expr, 106 bytes
fonte
Clojure, 46 bytes
Um dia vou criar a linguagem Cljr, que tem nomes de função mais curtos que o Clojure.
fonte