Menu
CoddyTech

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 wyciąć 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 indeksy tablicy zaczynają 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.

Indeksy ujemne działają również w zakresach. 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 dane wejściowe:

  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 dane wejściowe na tablicę liczb całkowitych. Następnie użyj zakresu z drugich danych wejściowych, aby wyodrębnić fragment tablicy, i wypisz każdy element tego fragmentu w osobnym wierszu.

W danych wejściowych określających zakres zostaną użyte albo dwie kropki (..), aby uwzględnić indeks końcowy, albo trzy kropki (...), aby go wykluczyć.

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

30
40
50
60

Jeśli dane wejściowe to 5,10,15,20,25,30 i 0...3, wynikiem powinno być:

5
10
15

Jeśli dane wejściowe to 100,200,300,400,500 i 1..-1, wynikiem powinno być:

200
300
400
500

Jeśli dane wejściowe to 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 i koniec zakresu oraz czy użyć .. czy ...
# 3. Wyodrębnij fragment tablicy za pomocą odpowiedniego zakresu
# 4. Wypisz każdy element wyodrębnionego 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