2010-08-19 5 views

risposta

42

È possibile utilizzare gli intervalli nella indice di matrice: risposta

arr[100..200] 
+3

È anche possibile eseguire intervalli negativi: arr [100 ..- 50] otterrebbe il centesimo elemento attraverso il 450esimo elemento, nel caso di un array di 500 elementi. –

+0

Buona risposta, grazie! :) – Vinozio

-3
new_array = old_array.first(200) - old_array.first(100) 
+0

Che rende senso :). Mi chiedevo se esistesse un metodo per questo – deb

+0

Quella crea due array temporanei e quindi fa una differenza di set ... non di spazio e di tempo efficiente, penso. – DarkDust

+0

il tuo diritto. Sono su una scatola di vincita e non ho rubino su di esso, quindi non ho potuto provare altre soluzioni in irb. Ho anche pensato a array.find (100..200), ma non so se accetta intervalli. Provalo. – s84

2
sample_array = (1..500).to_a 
elements_100_to_200 = sample_array[100..200] 

È possibile passare un intervallo come indice per un array e ottenere una sottomatrice con gli elementi interrogati da quel sottoinsieme.

13

Si può fare in questo modo:

array[100..200] # returns the elements in range 100..200 
# or 
array[100,100] # returns 100 elements from position 100 

More Information

10

di dvcolgan è giusto, ma suona come si potrebbe provare a suddividere l'array in gruppi di 100. In tal caso, è disponibile un pratico metodo integrato:

nums = (1..500).to_a 

nums.each_slice(100) do |slice| 
    puts slice.size 
end 

# => 100, 100, 100, 100, 100 
Problemi correlati