2011-04-10 32 views

cevap

16

Sen zip kullanabilirsiniz: ayrıca Matrix sınıf vardır

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

Çok teşekkürler. Ben her şeyi bir matrise dönüştürdüm. Bir soru daha. Yapılandırmayı otomatikleştirmek ve bir matrisi doldurmak için ne kullanırdım? Array1 = Array.new (hi) {| e | Kullanıcı tanımlı diziyi 0'larla oluşturmak ve doldurmak için e = 0}. Matrisler için benzer bir komut var mı? Tekrar teşekkürler! – subyman

+0

@subyman 'array1 = Array.new (merhaba, 0)' daha basit olurdu. – sawa

+0

@subyman 'Matrix.build' tam size göre olabilir. [Mor bilgi için dokümanlar] 'ı kontrol edin (http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/classes/Matrix.html#M001112). Yine de birkaç yöntem var. – Andy

2

Sen each_with_index ve map kullanabilirsiniz.

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

Bu da Ruby 1.8'de gayet iyi çalışıyor. –

+0

Teşekkürler, 1.9'da nelerin eklendiğini unuttum. – Andy