सारांश: यहां मूलभूत सवाल था, मैंने पाया है कि क्या आप रूबी सरणी में कोड ब्लॉक पास कर सकते हैं जो वास्तव में उस सरणी की सामग्री को दूसरे में कम कर देगा सरणी, एक मूल्य के लिए नहीं (इंजेक्ट करता है)। संक्षिप्त जवाब नहीं है"।इसके अंदर लकीर के अनुसार एक रूबी सरणी चंक करें
मैं यह जवाब स्वीकार कर रहा हूं जो यह कहता है। एक सरणी से बाहर निकलने के लिए एक महान लूपिंग रणनीति के लिए स्क्वीजी के लिए धन्यवाद।
चुनौती: सरणी के तत्वों को स्पष्ट रूप से लूप किए बिना कम करने के लिए।
इनपुट: -10 से 10 (0 को छोड़कर) से सभी पूर्णांक यादृच्छिक रूप से आदेश दिया गया।
वांछित आउटपुट: एक सरणी सकारात्मक या नकारात्मक संख्याओं की लकीर का प्रतिनिधित्व करती है। उदाहरण के लिए, एक -3 लगातार तीन नकारात्मक संख्याओं का प्रतिनिधित्व करता है। ए 2 लगातार दो सकारात्मक संख्याओं का प्रतिनिधित्व करता है।
नमूना स्क्रिप्ट:
original_array = (-10..10).to_a.sort{rand(3)-1}
original_array.reject!{|i| i == 0} # remove zero
streaks = (-1..1).to_a # this is a placeholder.
# The streaks array will contain the output.
# Your code goes here, hopefully without looping through the array
puts "Original Array:"
puts original_array.join(",")
puts "Streaks:"
puts streaks.join(",")
puts "Streaks Sum:"
puts streaks.inject{|sum,n| sum + n}
नमूना आउटपुट:
Original Array:
3,-4,-6,1,-10,-5,7,-8,9,-3,-7,8,10,4,2,5,-2,6,-1,-9
Streaks:
1,-2,1,-2,1,-1,1,-2,5,-1,1,-2
Streaks Sum:
0
Original Array:
-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10
Streaks:
-10,10
Streaks Sum:
0
नोट कुछ चीजें:
- धारियाँ सरणी धनात्मक और ऋणात्मक मानों बारी है।
- तत्वों की संख्या streaks सरणी हमेशा 0 है (जैसा कि मूल का योग है)।
- लकीर सरणी के शुद्ध मान का योग हमेशा 20.
आशा है कि स्पष्ट है है!
संपादित करें: मुझे एहसास है कि इस तरह के निर्माण अस्वीकार करते हैं! वास्तव में पृष्ठभूमि में सरणी के माध्यम से लूपिंग कर रहे हैं। मैं लूपिंग को छोड़ नहीं रहा क्योंकि मैं एक औसत व्यक्ति हूं। बस भाषा के बारे में जानने के लिए देख रहे हैं। यदि स्पष्ट पुनरावृत्ति आवश्यक है, तो यह ठीक है।
सरणी के माध्यम से फिर से क्यों नहीं? आप इसके माध्यम से लूप किए बिना किसी सरणी की सामग्री को संसाधित करने की अपेक्षा कैसे करते हैं। यहां तक कि यदि आप ऐसा करने के लिए एक विधि का उपयोग करते हैं, तो भी यह आंतरिक रूप से सरणी के माध्यम से लूप होगा। –
आपको एहसास है कि आपके कोड उदाहरण में आपके द्वारा बुलाए गए हर तरीके वास्तव में सरणी के माध्यम से लूपिंग कर रहे थे ... – kgrad
हाँ, बिल्कुल इसके माध्यम से लूप किए बिना सरणी को कम करने का कोई तरीका नहीं है ... पहुंचने का कोई तरीका नहीं होगा सामग्री। – cdmckay