Menu
Coddy logo textTech

Slicing de tableaux avec des plages

Fait partie de la section Fondamentaux du Journey Ruby de Coddy — leçon 69 sur 88.

Parfois, vous avez besoin d'extraire une partie d'un tableau plutôt que d'accéder à des éléments individuels. Ruby vous permet de découper des tableaux en utilisant des plages (ranges), ce qui crée un nouveau tableau contenant uniquement les éléments que vous spécifiez.

Pour découper un tableau avec une plage, placez la plage entre crochets :

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # Affiche : 20, 30, 40

L'intervalle 1..3 inclut les éléments aux index 1, 2 et 3. Rappelez-vous que les index de tableau commencent à 0, donc l'index 1 est le deuxième élément.

Vous pouvez également utiliser la plage à trois points (...) pour exclure le dernier index :

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # Affiche : a, b, c

Ici, 0...3 inclut les index 0, 1 et 2, mais s'arrête avant l'index 3.

Les index négatifs fonctionnent également avec les plages. Ils comptent à partir de la fin du tableau, où -1 est le dernier élément :

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # Affiche : green, blue, yellow

Ceci extrait tout depuis l'index 1 jusqu'au dernier élément, ce qui est utile lorsque vous voulez ignorer le premier élément sans connaître la longueur du tableau.

challenge icon

Défi

Facile

Lisez deux entrées :

  1. Une seule ligne d'entiers séparés par des virgules (par exemple, 10,20,30,40,50,60,70)
  2. Une spécification de plage au format start..end ou start...end (par exemple, 2..5 ou 1...4)

Divisez la première entrée en un tableau d'entiers. Utilisez ensuite la plage de la deuxième entrée pour découper le tableau et affichez chaque élément de la partie découpée sur sa propre ligne.

L'entrée de plage utilisera soit deux points (..) pour inclure l'index de fin, soit trois points (...) pour l'exclure.

Par exemple, si les entrées sont 10,20,30,40,50,60,70 et 2..5, la sortie devrait être :

30
40
50
60

Si les entrées sont 5,10,15,20,25,30 et 0...3, la sortie devrait être :

5
10
15

Si les entrées sont 100,200,300,400,500 et 1..-1, la sortie devrait être :

200
300
400
500

Si les entrées sont a,b,c,d,e,f et -3..-1, la sortie devrait être :

d
e
f

Aide-mémoire

Pour extraire une partie d'un tableau, utilisez des plages (ranges) à l'intérieur de crochets :

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Retourne [20, 30, 40] (index 1, 2 et 3)

Utilisez deux points (..) pour inclure l'index de fin :

letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Retourne ["a", "b", "c"] (index 0, 1 et 2)

Utilisez trois points (...) pour exclure l'index de fin :

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Retourne ["a", "b", "c"] (index 0, 1 et 2, s'arrête avant 3)

Les index négatifs comptent à partir de la fin du tableau (-1 est le dernier élément) :

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Retourne ["green", "blue", "yellow"] (de l'index 1 au dernier élément)

Essayez vous-même

# Lire les valeurs séparées par des virgules
input_values = gets.chomp

# Lire la spécification de la plage
range_spec = gets.chomp

# TODO: Écrivez votre code ci-dessous
# 1. Diviser input_values en un tableau
# 2. Analyser range_spec pour déterminer le début, la fin, et s'il faut utiliser .. ou ...
# 3. Découper le tableau en utilisant la plage appropriée
# 4. Afficher chaque élément de la partie découpée sur sa propre ligne
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux