Menu
Coddy logo textTech

Codice finale

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

challenge icon

Sfida

Facile

Riceverai quattro input che rappresentano un flusso di lavoro completo per una lista di cose da fare: primo, un elenco di attività iniziali separate da virgole; secondo, una nuova attività da aggiungere; terzo, il numero di un'attività da visualizzare (indicizzazione a partire da 1); quarto, il numero di un'attività da rimuovere (indicizzazione a partire da 1). Crea un gestore completo di liste di cose da fare che elabori tutte queste operazioni e mostri lo stato finale.

Requisiti:

  • Leggi il primo input contenente descrizioni di attività separate da virgole (ad es., Buy groceries,Call dentist,Finish homework)
  • Dividi la stringa in corrispondenza delle virgole e crea un vettore mutabile con queste attività iniziali
  • Leggi il secondo input e aggiungi questa nuova attività al vettore usando .push()
  • Leggi il terzo input e convertilo in un intero (numero dell'attività da visualizzare, a partire da 1)
  • Leggi il quarto input e convertilo in un intero (numero dell'attività da rimuovere, a partire da 1)
  • Rimuovi l'attività specificata convertendo l'indice da base 1 a base 0 e usando .remove()
  • Stampa Total tasks: X dove X è il numero finale di attività
  • Stampa Viewing task: Y dove Y è il numero dell'attività di cui è stata richiesta la visualizzazione
  • Scorri l'elenco finale delle attività e stampa ciascuna attività con il suo numero (a partire da 1)
  • Per l'attività corrispondente al numero da visualizzare (dopo gli eventuali aggiustamenti dovuti alla rimozione), stampa: [X] [task description] (selected)
  • Per tutte le altre attività, stampa: [X] [task description]

Input:

  • Prima riga: descrizioni di attività separate da virgole (ad es., Buy groceries,Call dentist,Finish homework)
  • Seconda riga: una nuova attività da aggiungere (ad es., Study for exam)
  • Terza riga: un intero che rappresenta il numero dell'attività da visualizzare (indicizzazione a partire da 1)
  • Quarta riga: un intero che rappresenta il numero dell'attività da rimuovere (indicizzazione a partire da 1)

Output:

  • Prima riga: Total tasks: X dove X è il numero finale di attività
  • Seconda riga: Viewing task: Y dove Y è il numero richiesto per la visualizzazione
  • Righe successive: ogni attività con il suo numero nel formato [X] [task description]
  • All'attività selezionata (corrispondente al numero da visualizzare) va aggiunto (selected)

Provalo tu

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Leggi le attività iniziali separate da virgole
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Leggi la nuova attività da aggiungere
    let new_task = lines.next().unwrap().unwrap();
    
    // Leggi il numero dell'attività da visualizzare (a partire da 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Leggi il numero dell'attività da rimuovere (a partire da 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Scrivi il tuo codice qui sotto
    // 1. Dividi initial_tasks usando le virgole e crea un vettore mutabile
    // 2. Aggiungi new_task al vettore
    // 3. Rimuovi l'attività alla posizione remove_number (converti in un indice a partire da 0)
    // 4. Stampa il numero totale di attività e le informazioni sull'attività da visualizzare
    // 5. Scorri l'elenco finale e stampa ogni attività
    
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Rust online