Vamos definir os "deltas multiplicativos" dos valores como:
A operação reversa - ou seja, "undelta multiplicativo" - retorna valores de forma que a operação acima resulte nos valores fornecidos.
Exemplo
Valores fornecidos uma solução geral para aoperação "undelta multiplicativa" é:
A solução particular pode ser obtido através da criação a qualquer valor diferente de zero, por exemplo através da criação obteríamos:
Desafio
Sua tarefa para este desafio é implementar a operação " undelta multiplicativo ", conforme definido acima.
Regras
As entradas são:
- um valor diferente de zero
- uma lista não-vazia / array / vetor / ..., de "não-zero de deltas multiplicativos "
A saída é uma lista / matriz / vetor / ... de valores, de modo que o primeiro elemento seja e para o qual os " deltas multiplicativos " são a entrada.
Nota: Se o seu idioma não suportar números inteiros negativos, você poderá substituir diferente de zero por positivo .
Casos de teste
2 [21] -> [2,42]
1 [1,5,3,2] -> [1,1,5,15,30]
-1 [1,5,3,2] -> [-1,-1,-5,-15,-30]
7 [1,-5,3,2] -> [7,7,-35,-105,-210]
2 [-12,3,-17,1311] -> [2,-24,-72,1224,1604664]
-12 [7,-1,-12,4] -> [-12,-84,84,-1008,-4032]
1 [2,2,2,2,2,2,2,2] -> [1,2,4,8,16,32,64,128,256]
Respostas:
Haskell, 8 bytes
Experimente online!
fonte
APL (Dyalog), 3 bytes
Experimente online!
Se eu tiver que pegar o número à esquerda e a matriz à direita:
-2 graças a @ H.PWiz
753 bytes×\,
fonte
⊣,⊢
pode apenas ser #,
×\,
avalia como uma função.f←×\
funciona, por exemplo. Btw, o(-12 3 -17 1311)
em seu link permanente deve ser(¯12 3 ¯17 1311)
.R , 15 bytes
Experimente online!
Programa completo. A função é mais longa (a menos que tenhamos permissão para "colar" as entradas, para que a built-in
cumprod
seja suficiente como resposta completa):R , 28 bytes
Experimente online!
fonte
MATL , 3 bytes
Experimente online!
O
hYp
e sobre MATL é real.fonte
JavaScript (ES6), 27 bytes
Toma entrada como
(m)(a)
.Experimente online!
fonte
Japonês, 3 bytes
Tente
Explicação
fonte
Python 3, 39 bytes
Abordagem alternativa. Retorna um gerador.
Experimente online!
fonte
Gelatina , 3 bytes
Experimente online!
fonte
Língua Wolfram (Mathematica) , 14 bytes
Experimente online!
FoldList[Times, a0, {x1, x2, ..., xn}]
produz a saída desejada.FoldList[Times]
é a forma ao curry que produz uma função pura ainda aguardando seua0
e{x1, x2, ..., xn}
.fonte
Perl 6 , 9 bytes
Experimente online!
fonte
ML padrão , 32 bytes
Experimente online!
Ungolfed:
fonte
J ,
65 bytes-1 byte graças a Bubbler
Experimente online!
Explicação:
Um verbo diadico, o argumento da esquerda
a0
, o primeiro - o vetorfonte
*/\@,
funciona exatamente da mesma maneira.Lote, 69 bytes
fonte
Lisp comum, 67 bytes
Experimente online!
fonte
Casca , 2 bytes
Experimente online!
Isso é equivalente à resposta de nimi em Haskell:,
scanl(*)
que significa reduzir da esquerda usando multiplicação e retornar todos os resultados parciais.fonte
05AB1E ,
53 bytes-2 bytes graças a @BMO .
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
s
estava lá para obter a outra entrada. :)s
é swap eš
está sendo anexado no início da lista. De qualquer maneira, obrigado pelo -2Pitão, 6 bytes
Teste esse aqui!
Como alternativa, 7 bytes:
Teste aqui!
O primeiro recebe a entrada como uma tupla, o segundo recebe a entrada como duas linhas separadas.
Obrigado à @Sok por me ajudar a melhorar o mapeamento e economizar 1 byte.
fonte
R
, como em*FR._s
- demonstraçãoM
supor que funcionaria e depois tive uma falha na análise de açúcar - principalmente porque não me lembrava como a análiseF <pf2>
funcionava.M
,F
,L
, eR
trabalho, eu apenas tentei um monte até que um trabalhou: o)Python 2 , 40 bytes
Experimente online!
Surpreendentemente, a mudança para o Python 3 e o uso de geradores lá economizam apenas 1 byte sobre a solução recursiva.
fonte
PowerShell , 29 bytes
Experimente online!
Isso pressupõe que apenas a saída dos valores esteja correta.
Se isso não for bom, isso realmente cria a lista e a envia para aString que imprime da mesma maneira.
fonte
Output is a list/array/vector/
. Então, o primeiro está bem.MathGolf ,
65 bytesExperimente online!
Eu acho que isso pode ser 5 bytes (Agora isso foi corrigido na versão mais recente.\{\o*
), mas\
instrução parece um pouco desligada ao lidar com entrada.Explicação:
fonte
Python 2 , 47 bytes
Experimente online!
fonte
Carvão , 12 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
K (oK) , 9 bytes
Experimente online!
Une o primeiro número à segunda entrada como uma lista e retorna resultados sucessivos de multiplicação
Casos de teste
Digite sua entrada após a função como abaixo e execute, pois não tenho certeza de como usar a entrada corretamente para esse idioma no TiO
fonte
dc , 13 bytes
Experimente online!
fonte