Menu
Coddy logo textTech

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 tablicy

Ta 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]
challenge icon

Wyzwanie

Łatwy

Otrzymasz 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);
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator Rust online