सवाल अंतिम तत्व से शुरू होने वाली सरणी के माध्यम से कैसे पुनरावृत्ति करें? (माणिक)


मैं नीचे समाधान के साथ आया था, लेकिन मेरा मानना ​​है कि वहां एक अच्छा होना चाहिए ...

array = [ 'first','middle','last']

index = array.length
array.length.times { index -= 1; puts array[index]}

37
2018-02-27 03:57


मूल




जवाब:


array.reverse.each { |x| puts x }

48
2018-02-27 03:58



मुझे पता था कि कुछ होगा nice ... धन्यवाद। - Radek
वास्तव में, reverse_each बेहतर है क्योंकि यह सरणी की प्रतिलिपि बनाता है reverse कर देता है। - Mladen Jablanović
हाँ, मैं भी इसकी उम्मीद करूँगा reverse_each बेहतर है, हालांकि मैंने खुद को देखने के लिए आंतरिक में खोला नहीं है। - David J.


रूबी स्मार्ट है

a = [ "a", "b", "c" ]
a.reverse_each {|x| print x, " " }

87
2018-02-27 07:56





आप लूप के लिए भी उपयोग कर सकते हैं

array = [ 'first','middle','last']
for each in array.reverse do
   print array
end

प्रिंट करेंगे

last
middle
first

4
2017-11-10 08:34





यदि आप रिवर्स में एक सीमा के माध्यम से फिर से शुरू करना चाहते हैं तो उपयोग करें:

(0..5).reverse_each do |i|
  # do something
end

3
2017-09-20 17:53



कर देता है #reverse_each आंतरिक रूप से एक रिवर्स ऑपरेशन प्रदर्शन करते हैं? या यह सिर्फ अंत में शुरू होता है और पीछे की ओर काम करता है? यदि उत्तरार्द्ध, यह उत्तर पहली कॉलिंग की तुलना में बेहतर समय जटिलता प्राप्त कर सकता है #reverse और फिर #each अलग से, के बाद से #reverse अनिवार्य रूप से ओ (एन लॉग एन) का एक प्रकार का ऑपरेशन है जबकि पिछले से पहले की गणना करना वही है #each समय जटिलता के मामले में (यानी ओ (एन))। - Richie Thomas


एक जेड टेम्पलेट में आप इसका उपयोग कर सकते हैं:

for item in array.reverse()
   item

0
2017-10-14 09:11





यदि आप रिवर्स का उपयोग किये बिना इसे हासिल करना चाहते हैं [कभी-कभी यह प्रश्न साक्षात्कार में आता है]। हमें मूल तर्क का उपयोग करने की आवश्यकता है।

  1. सरणी सूचकांक के माध्यम से पहुंचा जा सकता है
  2. इंडेक्स को सरणी की लंबाई तक सेट करें और उसके बाद सूचकांक तक पहुंचने तक 1 तक की कमी करें
  3. आउटपुट स्क्रीन या एक नई सरणी या किसी भी तर्क करने के लिए लूप का उपयोग करें।

        def reverseArray(input)
          output = []
          index = input.length - 1 #since 0 based index and iterating from 
          last to first
    
          loop do
            output << input[index]
            index -= 1
            break if index < 0
          end
    
          output
        end
    
        array = ["first","middle","last"]
    
        reverseArray array #outputs: ["last","middle","first"]
    

0
2017-09-12 15:11