Slicing degli array con intervalli
Fa parte della sezione Fondamenti del percorso Ruby di Coddy. Lezione 69 di 88.
A volte devi estrarre una porzione di un array invece di accedere ai singoli elementi. Ruby ti permette di suddividere gli array usando intervalli, creando un nuovo array che contiene solo gli elementi specificati.
Per suddividere un array con un intervallo, inserisci l’intervallo tra parentesi quadre:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
puts slice # Stampa: 20, 30, 40L'intervallo 1..3 include gli elementi agli indici 1, 2 e 3. Ricorda che gli indici degli array iniziano da 0, quindi l'indice 1 corrisponde al secondo elemento.
Puoi anche usare l’intervallo a tre punti (...) per escludere l’ultimo indice:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
puts slice # Stampa: a, b, cQui, 0...3 include gli indici 0, 1 e 2, ma si fermano prima dell'indice 3.
Gli indici negativi funzionano anche con gli intervalli. Si contano dalla fine dell'array, dove -1 è l'ultimo elemento:
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
puts slice # Stampa: green, blue, yellowQuesto estrae tutto dall’indice 1 fino all’ultimo elemento, il che è utile quando vuoi saltare il primo elemento senza conoscere la lunghezza dell’array.
Sfida
FacileLeggi due input:
- Una singola riga di numeri interi separati da virgole (ad es.,
10,20,30,40,50,60,70) - Una specifica di intervallo nel formato
start..endostart...end(ad es.,2..5o1...4)
Dividi il primo input in un array di numeri interi. Poi usa l'intervallo del secondo input per estrarre una sezione dell'array e stampa ogni elemento della sezione estratta su una riga separata.
L'input dell'intervallo userà due punti (..) per includere l'indice finale oppure tre punti (...) per escluderlo.
Ad esempio, se gli input sono 10,20,30,40,50,60,70 e 2..5, l'output dovrebbe essere:
30
40
50
60Se gli input sono 5,10,15,20,25,30 e 0...3, l'output dovrebbe essere:
5
10
15Se gli input sono 100,200,300,400,500 e 1..-1, l'output dovrebbe essere:
200
300
400
500Se gli input sono a,b,c,d,e,f e -3..-1, l'output dovrebbe essere:
d
e
fProvalo tu
# Leggi i valori separati da virgole
input_values = gets.chomp
# Leggi la specifica dell'intervallo
range_spec = gets.chomp
# TODO: Scrivi il tuo codice qui sotto
# 1. Suddividi input_values in un array
# 2. Analizza range_spec per determinare l'inizio, la fine e se usare .. o ...
# 3. Estrai una porzione dell'array usando l'intervallo appropriato
# 4. Stampa ogni elemento della porzione estratta su una riga a séQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 3Operatori logici Parte 47Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dall'utente10FizzBuzz con un colpo di scena
Panoramica del giocoIl metodo FizzBuzz13Array avanzati
Slicing degli array con intervalliSlicing degli array con indiciOperatori degli arrayMetodo Include?2Variabili e tipi di dato
Numeri e variabiliTipo di dato stringaTipo di dato booleanoTipo di dato SymbolVerifica dei tipi di datoConvenzioni di denominazioneRiepilogo - Creazione di variabili5Strutture decisionali
Istruzione ifIf-ElseRipasso - Calcolatrice sempliceIf-Else annidatoIstruzione unless8Cicli
Ciclo for con intervalliCiclo whilebreaknextRiepilogo - FattorialeCiclo timesCiclo untilCicli annidatiRiepilogo - Input dinamico3Operatori, parte 1
Operatori aritmeticiOperatore moduloScorciatoie aritmeticheRipasso: matematica sempliceOperatori di confronto6Input/Output di base
Output con putsOutput con print e pOutput con variabiliInput con getsMetodo chompConversione di tipoRipasso - Calcolatore dell'etàRipasso - Vero o falsoEsercitati da solo: Compilatore Ruby online