Calcule la derivada ([i] - [i - 1]) en Ruby
-
06-07-2019 - |
Pregunta
Trivial usando un bucle for o each_with_index, solo preguntándome si había una mejor manera de hacerlo usando la sintaxis de Ruby.
Necesito crear una nueva matriz que sea la derivada de la matriz fuente, por ejemplo:
for(int i = 1; i < oldArray.length; i++)
{
newArray[i] = oldArray[i] - oldArray[i-1]
}
Solución
old_array.each_cons(2).map{|x, y| y - x}
Enumerable # each_cons
llamado con un tamaño de fragmento de 2 pero sin un bloque devuelve un Enumerator que iterará sobre cada par de elementos consecutivos en old_array
. Luego solo usamos map
para realizar una resta en cada par.
Otros consejos
last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow