Menu
CoddyTech

Altre slice

Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 57 di 66.

Sebbene le fette di stringa siano molto utili, lo slicing non è limitato alle sole stringhe. Il concetto di slice di Rust si estende a qualsiasi sequenza di elementi, rendendolo uno strumento potente per lavorare con le collezioni senza acquisirne la proprietà.

Puoi creare slice da array e vettori usando la stessa sintassi che hai imparato per le stringhe. Per esempio, se hai un array di numeri, puoi creare una slice che fa riferimento a una parte o alla totalità dell’array:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Questo ci restituisce [2, 3, 4]
let full_slice: &[i32] = &numbers;  // Questo fa riferimento all'intero array

Lo stesso principio vale per i vettori. Puoi creare slice dai vettori per lavorare con porzioni dei dati senza spostarli né copiarli:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Questo ci dà [10, 20]
challenge icon

Sfida

Facile

Riceverai tre input. Il primo input è un elenco di numeri separati da virgole. Il secondo input è composto da due numeri separati da uno spazio, che rappresentano gli indici iniziale e finale per creare una slice. Il terzo input è un singolo numero che rappresenta un indice a cui accedere nella slice.

Crea un vettore dai numeri separati da virgole, poi crea una slice usando l'intervallo specificato. Accedi all'elemento all'indice indicato nella slice e stampalo.

Requisiti:

  • Leggi il primo input (numeri separati da virgole) e rimuovi gli spazi bianchi iniziali e finali
  • Dividi l'input in base alle virgole e analizza ogni numero come i32
  • Crea un vettore a partire da questi numeri
  • Leggi il secondo input (due numeri separati da uno spazio) e rimuovi gli spazi bianchi iniziali e finali
  • Dividi il secondo input in base allo spazio per ottenere gli indici iniziale e finale
  • Analizza entrambi gli indici come usize
  • Crea una slice dal vettore usando la sintassi per gli intervalli &vec[start..end]
  • Leggi il terzo input (indice a cui accedere) e rimuovi gli spazi bianchi iniziali e finali
  • Analizza l'indice come usize
  • Accedi all'elemento all'indice specificato nella slice
  • Stampa l'elemento a cui hai avuto accesso

Input:

  • Prima riga: numeri separati da virgole (ad es., 10,20,30,40,50)
  • Seconda riga: due numeri separati da uno spazio (ad es., 1 4)
  • Terza riga: un numero che indica un indice (ad es., 2)

Output:

  • L'elemento all'indice specificato nella slice

Provalo tu

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Leggi il primo input (numeri separati da virgole)
    let first_input = lines.next().unwrap().unwrap();
    
    // Leggi il secondo input (indici iniziale e finale)
    let second_input = lines.next().unwrap().unwrap();
    
    // Leggi il terzo input (indice a cui accedere)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Scrivi il tuo codice qui sotto
    // Analizza i numeri separati da virgole e crea un vettore
    // Analizza gli indici iniziale e finale
    // Crea una slice dal vettore
    // Accedi all'elemento della slice all'indice specificato
    
    // Stampa il risultato
    // println!("{}", result);
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Rust online