Ruby

2009-07-31 6 views
4

Trivial에서 미분 ([i] - [i - 1])을 계산합니다. for 루프 또는 each_with_index를 사용합니다. Ruby 구문을 사용하여 더 나은 방법이 있는지 궁금합니다. 이 덩어리의 크기 만하지 않고 호출Ruby

for(int i = 1; i < oldArray.length; i++) 
{ 
    newArray[i] = oldArray[i] - oldArray[i-1] 
} 
+0

내 의견을 입력하기도 전에 우승자를 공평하게 선택하지 않아야합니다 .-P – Avdi

답변

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

Enumerable#each_cons는 블록이를 반환

나는 소스 배열의 파생 인 새로운 배열, 예를 작성해야 old_array에있는 각 연속 요소 쌍을 반복하는 열거 자입니다. 그런 다음 map을 사용하여 각 쌍에 대해 뺄셈을 수행합니다.

+0

[1,2,3,4]에서 실행 했으므로 [1,1,1]이됩니다. – Avdi

+0

each_slice를 생각하지 않으시겠습니까? 그것은 [1,1]을 줄 것입니다. – Avdi

+0

죄송합니다.이 답변은 더 잘 작동합니다. – CookieOfFortune

1
last=0 
new = old.map{|v|x=v-last;last=v;x}[1..-1] 
관련 문제