Menu
CoddyTech

Slicing de tableaux avec des plages

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

Parfois, tu dois extraire une partie d’un tableau plutôt que d’accéder à des éléments individuels. Ruby te permet de découper des tableaux à l’aide de plages, ce qui crée un nouveau tableau contenant uniquement les éléments que tu as spécifiés.

Pour extraire une tranche d’un tableau à l’aide d’une plage, place la plage entre crochets :

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

puts slice  # Affiche : 20, 30, 40

La plage 1..3 comprend les éléments aux index 1, 2 et 3. N’oublie pas que les index d’un tableau commencent à 0, donc l’index 1 correspond au deuxième élément.

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

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 aussi avec les plages. Ils comptent à partir de la fin du tableau, où -1 correspond au dernier élément :

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

puts slice  # Affiche : green, blue, yellow

Cela extrait tous les éléments à partir de l’index 1 jusqu’au dernier élément, ce qui est utile lorsque tu veux ignorer le premier élément sans connaître la longueur du tableau.

challenge icon

Défi

Facile

Lis 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)

Divise la première entrée en un tableau d’entiers. Utilise ensuite la plage de la deuxième entrée pour découper le tableau et afficher chaque élément de la portion découpée sur sa propre ligne.

La plage saisie 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

Essayez vous-même

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

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

# TODO: Écrivez votre code ci-dessous
# 1. Séparez input_values en un tableau
# 2. Analysez range_spec pour déterminer start, end et s’il faut utiliser .. ou ...
# 3. Extrayez une portion du tableau à l’aide de la plage appropriée
# 4. Affichez chaque élément de la portion extraite 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

Entraînez-vous par vous-même : Compilateur Ruby en ligne