Frage

Trivial mit einem für Schleifen oder Ever_with_index, frage mich nur, ob es eine bessere Möglichkeit gab, dies mit Ruby -Syntax zu tun.

Ich muss ein neues Array erstellen, das die Ableitung des Quellarrays ist, z. B.:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
War es hilfreich?

Lösung

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

Enumerable#each_cons mit einer Blockgröße von 2 angerufen, aber ohne Block gibt es einen Enumerator zurück, der über jedes Paar aufeinanderfolgender Elemente in iteriert old_array. Dann benutzen wir nur map um eine Subtraktion auf jedem Paar durchzuführen.

Andere Tipps

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top