Inne wycinki
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 57 z 66.
Chociaż wycinki łańcuchów znaków są bardzo przydatne, wycinanie nie ogranicza się tylko do łańcuchów znaków. Koncepcja wycinków w Rust obejmuje dowolny ciąg elementów, dzięki czemu jest potężnym narzędziem do pracy z kolekcjami bez przejmowania własności.
Możesz tworzyć wycinki z tablic i wektorów, używając tej samej składni, której nauczono Cię dla ciągów znaków. Na przykład, jeśli masz tablicę liczb, możesz utworzyć wycinek, który odwołuje się do jej części lub całości:
let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // To daje nam [2, 3, 4]
let full_slice: &[i32] = &numbers; // To jest odwołanie do całej tablicyTa sama zasada działa w przypadku wektorów. Możesz tworzyć wycinki wektorów, aby pracować z fragmentami danych bez ich przenoszenia ani kopiowania:
let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // To daje nam [10, 20]Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe. Pierwsze wejście to lista liczb oddzielonych przecinkami. Drugie wejście to dwie liczby oddzielone spacją, reprezentujące indeks początkowy i końcowy używane do utworzenia wycinka. Trzecie wejście to pojedyncza liczba reprezentująca indeks elementu, do którego należy uzyskać dostęp w wycinku.
Utwórz wektor z liczb oddzielonych przecinkami, a następnie utwórz wycinek przy użyciu podanego zakresu. Uzyskaj dostęp do elementu o podanym indeksie w wycinku i wypisz go.
Wymagania:
- Odczytaj pierwsze wejście (liczby oddzielone przecinkami) i usuń białe znaki z początku i końca
- Podziel wejście po przecinkach i sparsuj każdą liczbę jako
i32 - Utwórz wektor z tych liczb
- Odczytaj drugie wejście (dwie liczby oddzielone spacją) i usuń białe znaki z początku i końca
- Podziel drugie wejście po spacji, aby uzyskać indeks początkowy i końcowy
- Sparsuj oba indeksy jako
usize - Utwórz wycinek z wektora, używając składni zakresu
&vec[start..end] - Odczytaj trzecie wejście (indeks elementu, do którego należy uzyskać dostęp) i usuń białe znaki z początku i końca
- Sparsuj indeks jako
usize - Uzyskaj dostęp do elementu o podanym indeksie w wycinku
- Wypisz pobrany element
Wejście:
- Pierwszy wiersz: liczby oddzielone przecinkami (np.
10,20,30,40,50) - Drugi wiersz: dwie liczby oddzielone spacją (np.
1 4) - Trzeci wiersz: liczba będąca indeksem (np.
2)
Wyjście:
- Element o podanym indeksie w wycinku
Spróbuj swoich sił
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Wczytaj pierwsze dane wejściowe (liczby oddzielone przecinkami)
let first_input = lines.next().unwrap().unwrap();
// Wczytaj drugie dane wejściowe (indeksy początku i końca)
let second_input = lines.next().unwrap().unwrap();
// Wczytaj trzecie dane wejściowe (indeks elementu do odczytania)
let third_input = lines.next().unwrap().unwrap();
// TODO: Napisz swój kod poniżej
// Przetwórz liczby oddzielone przecinkami i utwórz wektor
// Przetwórz indeksy początku i końca
// Utwórz wycinek wektora
// Odczytaj z wycinka element o podanym indeksie
// Wypisz wynik
// println!("{}", result);
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kod6Obsługa braku wartości za pomocą „Option”
Czym jest „Option”?Używanie „match” z „Option”is_some() i is_none()Rozpakowywanie „Option”Metoda expectPodawanie wartości domyślnej: unwrap_orPodsumowanie – znajdowanie elementu9Wycinki napisów i więcej
String a &strTworzenie wycinków napisówWycinki jako parametry funkcjiInne wycinkiPodsumowanie — znajdowanie pierwszego słowaPoćwicz samodzielnie: Kompilator Rust online