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, 40Zakres 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, cTutaj 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, yellowTo wyodrębnia wszystkie elementy od indeksu 1 do ostatniego, co jest przydatne, gdy chcesz pominąć pierwszy element bez znajomości długości tablicy.
Wyzwanie
ŁatwyWczytaj dwa dane wejściowe:
- Pojedynczy wiersz liczb całkowitych oddzielonych przecinkami (np.
10,20,30,40,50,60,70) - Specyfikację zakresu w formacie
start..endlubstart...end(np.2..5lub1...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
60Jeśli dane wejściowe to 5,10,15,20,25,30 i 0...3, wynikiem powinno być:
5
10
15Jeśli dane wejściowe to 100,200,300,400,500 i 1..-1, wynikiem powinno być:
200
300
400
500Jeśli dane wejściowe to a,b,c,d,e,f i -3..-1, wynikiem powinno być:
d
e
fSpró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 wierszuTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika13Zaawansowane tablice
Wycinanie tablic za pomocą zakresówWycinanie tablic za pomocą indeksówOperatory tablicMetoda Include?2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałszPoćwicz samodzielnie: Kompilator Ruby online