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, 40Zakres 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, cTutaj 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, 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 wejścia:
- 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 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
60Jeśli wejściami są 5,10,15,20,25,30 i 0...3, wynikiem powinno być:
5
10
15Jeśli wejściami są 100,200,300,400,500 i 1..-1, wynikiem powinno być:
200
300
400
500Jeśli wejściami są 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, 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 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