Definamos los "deltas multiplicativos" de los valores como:
La operación inversa, a saber, "undelta multiplicativa" , devuelve valores tales que la operación anterior da como resultado los valores dados.
Ejemplo
Valores dados una solución general para la operación " undelta multiplicativa " es:
Se puede obtener una solución particular configurando a cualquier valor que no sea cero, por ejemplo, configurando obtendríamos:
Desafío
Su tarea para este desafío es implementar la operación " multiplicativa undelta " como se definió anteriormente.
Reglas
Las entradas son:
- un valor distinto de cero
- una lista no vacía / matriz / vector / ... de no-cero " deltas multiplicativos "
La salida es una lista / matriz / vector / ... de valores de modo que el primer elemento es y para el cual los " deltas multiplicativos " son la entrada.
Nota: si su idioma no admite números enteros negativos, puede reemplazar un valor distinto de cero por positivo .
Casos de prueba
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]
Respuestas:
Haskell, 8 bytes
Pruébalo en línea!
fuente
APL (Dyalog), 3 bytes
Pruébalo en línea!
Si tengo que tomar el número a la izquierda y la matriz a la derecha:
-2 gracias a @ H.PWiz
753 bytes×\,
fuente
⊣,⊢
puede ser solo,
×\,
evalúa a una función.f←×\
funciona, por ejemplo. Por cierto, el(-12 3 -17 1311)
en su enlace permanente debería ser(¯12 3 ¯17 1311)
.R , 15 bytes
Pruébalo en línea!
Programa completo La función es más larga (a menos que se nos permita "pegar" las entradas juntas, de modo que
cumprod
sería suficiente como respuesta completa):R , 28 bytes
Pruébalo en línea!
fuente
MATL , 3 bytes
Pruébalo en línea!
La
hYp
información sobre MATL es real.fuente
JavaScript (ES6), 27 bytes
Toma entrada como
(m)(a)
.Pruébalo en línea!
fuente
Japt, 3 bytes
Intentalo
Explicación
fuente
Python 3, 39 bytes
Enfoque alternativo. Devuelve un generador.
Pruébalo en línea!
fuente
Jalea , 3 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 14 bytes
Pruébalo en línea!
FoldList[Times, a0, {x1, x2, ..., xn}]
produce la salida deseada.FoldList[Times]
es la forma curry que produce una función pura que todavía espera sua0
y{x1, x2, ..., xn}
.fuente
Perl 6 , 9 bytes
Pruébalo en línea!
fuente
ML estándar , 32 bytes
Pruébalo en línea!
Sin golf:
fuente
J ,
65 bytes-1 byte gracias a Bubbler
Pruébalo en línea!
Explicación:
Un verbo diadico, el argumento de la izquierda es
a0
, el derecho: el vectorfuente
*/\@,
Funciona exactamente igual.Lote, 69 bytes
fuente
Lisp común, 67 bytes
Pruébalo en línea!
fuente
Casco , 2 bytes
Pruébalo en línea!
Esto es equivalente a la respuesta de nimi en Haskell: lo
scanl(*)
que significa reducir desde la izquierda usando la multiplicación y devolver todos los resultados parciales.fuente
05AB1E ,
53 bytes-2 bytes gracias a @BMO .
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
s
estaba allí para obtener la otra entrada. :)s
es swap yš
está precediendo al comienzo de la lista. De cualquier manera, gracias por el -2Pyth, 6 bytes
¡Prueba esa aquí!
Alternativamente, 7 bytes:
¡Pruébalo aquí!
El primero toma la entrada como una tupla, el segundo toma la entrada como dos líneas separadas.
Gracias a @Sok por ayudarme a mejorar el mapeo y guardar 1 byte.
fuente
R
, como en*FR._s
- demostraciónM
suponer que funcionaría, luego obtuve un fallo de análisis de azúcar, principalmente porque no recordaba cómo funcionaba el análisisF <pf2>
.M
,F
,L
, yR
el trabajo, que acaba de intentar un montón hasta que se trabajó: o)Python 2 , 40 bytes
Pruébalo en línea!
Sorprendentemente, el cambio a Python 3 y el uso de generadores allí solo ahorran 1 byte sobre la solución recursiva.
fuente
PowerShell , 29 bytes
Pruébalo en línea!
Esto supone que simplemente generar los valores está bien.
Si eso no está bien, esto realmente construye la lista y luego la empuja a toString, que se imprime de la misma manera.
fuente
Output is a list/array/vector/
. Entonces, el primero está bien.MathGolf ,
65 bytesPruébalo en línea!
Creo que esto podría ser 5 bytes (Esto ahora está arreglado en la última versión.\{\o*
) pero la\
instrucción parece un poco apagada cuando se trata de entrada.Explicación:
fuente
Python 2 , 47 bytes
Pruébalo en línea!
fuente
Carbón de leña , 12 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
K (oK) , 9 bytes
Pruébalo en línea!
Une el primer número a la segunda entrada como una lista y luego devuelve resultados sucesivos de multiplicación
Casos de prueba
Ingrese su entrada después de la función como se muestra a continuación y luego ejecute, ya que no estoy seguro de cómo usar la entrada correctamente para este idioma en TiO
fuente
cc , 13 bytes
Pruébalo en línea!
fuente