में अलग लंबाई की सरणियों बिछा कैसे मैं रूबी में सरणियों का एक सेट बिछा चाहते हैं, और प्रत्येक सरणी में एक ही लंबाई था, हम क्या कर सकता है तो के रूप में:रूबी
a.zip(b).zip(c).flatten
हालांकि, कैसे हम करते हैं अगर सरणी अलग-अलग आकार हो सकती है तो इस समस्या को हल करें?
def interleave(*args)
raise 'No arrays to interleave' if args.empty?
max_length = args.inject(0) { |length, elem| length = [length, elem.length].max }
output = Array.new
for i in 0...max_length
args.each { |elem|
output << elem[i] if i < elem.length
}
end
return output
end
लेकिन वहाँ एक बेहतर 'रूबी' तरीका है, शायद ज़िप का उपयोग कर या स्थानांतरित करता है या कुछ इस तरह:
हम की तरह कुछ कर सकता है?
धन्यवाद, args.map नहीं माना जाता था (और: आकार)। वास्तव में, मैंने पहले उस दृष्टिकोण को नहीं देखा था। Max_length.times भी मेरे फॉर-लूप से क्लीनर है। – ChrisInEdmonton
और मैंने निल्स के साथ छोटे सरणी को पैडिंग करने, उन्हें अंतःस्थापित करने, फिर नाइल्स को कॉम्पैक्ट करने के बारे में सोचा था। यह बहुत अच्छा है और केवल तभी यदि आप सुनिश्चित कर सकते हैं कि आपके स्रोत सरणी में उनमें कोई नील नहीं है। :) – ChrisInEdmonton