2011-04-10 4 views
6

나는이 수행 Ruby- 다른 배열 한 배열에서 요소를 뺀 추가/

a = [1,2,3,4] 
b = [2,3,4,5] 
c = b - a 
put c 

내가이 답변을 얻을 -이 대답을 원하는> [1]
을 -> [1,1,1,1] (매트릭스 또한/뺄셈 등)

나는이 시도 :

c.each {|e| c[e] = b[e] - a[e]} 

을하지만 난이 답변을 얻을 :를

누군가가 나에게 올바른 방법을 제공 할 수 있습니까? 고마워요!

답변

16

당신은 zip을 사용할 수도 Matrix 클래스가

a.zip(b).map { |x, y| y - x } 
# => [1, 1, 1, 1] 

:

require "matrix" 

a = Matrix[[1, 2, 3, 4]] 
b = Matrix[[2, 3, 4, 5]] 
c = b - a 
# => Matrix[[1, 1, 1, 1]] 
+0

고마워요. 나는 모든 것을 모체로 바꿨다. 한 가지 더 묻습니다. 구성을 자동화 한 다음 행렬을 채우기 위해 무엇을 사용합니까? array1 = Array.new (hi) {| e |를 사용했습니다. e = 0}를 사용하여 사용자 정의 배열을 구성하고 0으로 채 웁니다. 행렬에 대해서도 비슷한 명령이 있습니까? 다시 한 번 감사드립니다! – subyman

+0

@subyman'array1 = Array.new (hi, 0)'는 더 간단합니다. – sawa

+0

@subyman'Matrix.build'가 당신이 찾고있는 것일 수 있습니다. [doc for mor info] (http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/classes/Matrix.html#M001112)를 확인하십시오. 그러나 방법의 숫자가 있습니다. – Andy

2

당신은 each_with_indexmap를 사용할 수 있습니다.

c = b.each_with_index.map { |n,i| n - a[i] } 
# => [1, 1, 1, 1] 
+0

이것은 Ruby 1.8에서도 잘 작동합니다. –

+0

감사합니다. 1.9에서 추가 된 것을 잊어 버렸습니다. – Andy

관련 문제