Menu
Coddy logo textTech

Wycinanie tablic za pomocą zakresów

Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 69 z 88.

Czasami trzeba wyodrębnić część tablicy zamiast uzyskiwać dostęp do poszczególnych elementów. Ruby pozwala wycinać fragmenty tablic za pomocą zakresów, co tworzy nową tablicę zawierającą tylko wskazane elementy.

Aby wyodrębnić fragment tablicy za pomocą zakresu, umieść zakres w nawiasach kwadratowych:

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

puts slice  # Wyświetla: 20, 30, 40

Zakres 1..3 obejmuje elementy o indeksach 1, 2 i 3. Pamiętaj, że indeksowanie tablicy zaczyna się od 0, więc indeks 1 oznacza drugi element.

Możesz też użyć zakresu z trzema kropkami (...), aby wykluczyć ostatni indeks:

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

puts slice  # Wypisuje: a, b, c

Tutaj 0...3 obejmuje indeksy 0, 1 i 2, ale kończy się przed indeksem 3.

Ujemne indeksy działają również z zakresami. Liczą od końca tablicy, gdzie -1 oznacza ostatni element:

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

puts slice  # Wyświetla: green, blue, yellow

To wyodrębnia wszystkie elementy od indeksu 1 do ostatniego, co jest przydatne, gdy chcesz pominąć pierwszy element bez znajomości długości tablicy.

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wejścia:

  1. Pojedynczy wiersz liczb całkowitych oddzielonych przecinkami (np. 10,20,30,40,50,60,70)
  2. Specyfikację zakresu w formacie start..end lub start...end (np. 2..5 lub 1...4)

Podziel pierwsze wejście na tablicę liczb całkowitych. Następnie użyj zakresu z drugiego wejścia, aby wyciąć fragment tablicy i wypisać każdy element tego fragmentu w osobnym wierszu.

Zakres będzie zapisany za pomocą dwóch kropek (..), aby uwzględnić indeks końcowy, albo trzech kropek (...), aby go wykluczyć.

Na przykład, jeśli wejściami są 10,20,30,40,50,60,70 i 2..5, wynikiem powinno być:

30
40
50
60

Jeśli wejściami są 5,10,15,20,25,30 i 0...3, wynikiem powinno być:

5
10
15

Jeśli wejściami są 100,200,300,400,500 i 1..-1, wynikiem powinno być:

200
300
400
500

Jeśli wejściami są a,b,c,d,e,f i -3..-1, wynikiem powinno być:

d
e
f

Spróbuj swoich sił

# Wczytaj wartości oddzielone przecinkami
input_values = gets.chomp

# Wczytaj specyfikację zakresu
range_spec = gets.chomp

# TODO: Napisz swój kod poniżej
# 1. Podziel input_values na tablicę
# 2. Przeanalizuj range_spec, aby ustalić początek, koniec oraz to, czy użyć .. czy ...
# 3. Wytnij fragment tablicy, używając odpowiedniego zakresu
# 4. Wypisz każdy element wyciętego fragmentu w osobnym wierszu
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Ruby online