2011-04-10 19 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 इस्तेमाल कर सकते हैं:

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

भी एक Matrix वर्ग नहीं है:

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 | का उपयोग किया ई = 0} उपयोगकर्ता परिभाषित सरणी को 0 के साथ बनाने और भरने के लिए। क्या matrices के लिए एक समान आदेश है? एक बार फिर धन्यवाद! – subyman

+0

@subyman 'array1 = Array.new (hi, 0) 'आसान होगा। – sawa

+0

@subyman 'Matrix.build' जो आप खोज रहे हैं वह हो सकता है। [Mor जानकारी के लिए डॉक्टर] की जांच करें (http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/classes/Matrix.html#M001112)। यद्यपि कई विधियां हैं। – Andy

2

आप each_with_index और map उपयोग कर सकते हैं।

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

यह रूबी 1.8 में भी ठीक काम करता है। –

+0

धन्यवाद, मैं भूल रहा हूं कि 1.9 में क्या जोड़ा गया था। – Andy

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^