Pergunta

Trivial usando um loop ou cada_with_index, apenas imaginando se havia uma maneira melhor de fazê -lo usando a sintaxe do rubi.

Preciso criar uma nova matriz que seja a derivada da matriz de origem, por exemplo:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
Foi útil?

Solução

old_array.each_cons(2).map{|x, y| y - x}

Enumerable#each_cons chamado com um tamanho de pedaço de 2, mas sem um bloco retorna um enumerador que itera sobre cada par de elementos consecutivos em old_array. Então nós apenas usamos map Para executar uma subtração em cada par.

Outras dicas

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top