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]
}
¿Fue útil?

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
scroll top