Menu
Coddy logo textTech

Altre slice

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

Sebbene le slice 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 a tutto l’array:

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

Lo stesso principio funziona con 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 porzione. Il terzo input è un singolo numero che rappresenta un indice da cui accedere alla porzione.

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

Requisiti:

  • Leggi il primo input (numeri separati da virgole) e rimuovi gli spazi vuoti iniziali e finali
  • Suddividi l’input in corrispondenza delle virgole e analizza ogni numero come i32
  • Crea un vettore con questi numeri
  • Leggi il secondo input (due numeri separati da uno spazio) e rimuovi gli spazi vuoti iniziali e finali
  • Suddividi il secondo input in corrispondenza dello spazio per ottenere gli indici iniziale e finale
  • Analizza entrambi gli indici come usize
  • Crea una porzione dal vettore usando la sintassi per gli intervalli &vec[start..end]
  • Leggi il terzo input (l’indice da cui accedere) e rimuovi gli spazi vuoti iniziali e finali
  • Analizza l’indice come usize
  • Accedi all’elemento all’indice specificato nella porzione
  • 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 porzione

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 dell'elemento a cui accedere)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Scrivi il tuo codice qui sotto
    // Interpreta i numeri separati da virgole e crea un vettore
    // Interpreta 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