문제

for loop 또는 eary_with_index를 사용하는 사소한, Ruby Syntax를 사용하여 더 나은 방법이 있는지 궁금합니다.

소스 배열의 파생물 인 새 배열을 만들어야합니다.

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
도움이 되었습니까?

해결책

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

Enumerable#each_cons 청크 크기가 2로 호출되지만 블록 없이는 각 연속 요소 쌍을 반복하는 열거자를 반환합니다. old_array. 그런 다음 우리는 그냥 사용합니다 map 각 쌍에서 뺄셈을 수행합니다.

다른 팁

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top