Menu
Coddy logo textTech

Code final

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 19 sur 66.

challenge icon

Défi

Facile

Vous recevrez quatre entrées représentant un flux de travail complet de liste de tâches : premièrement, une liste de tâches initiales séparées par des virgules ; deuxièmement, une nouvelle tâche à ajouter ; troisièmement, un numéro de tâche à consulter (indexation basée sur 1) ; et quatrièmement, un numéro de tâche à supprimer (indexation basée sur 1). Créez un gestionnaire de liste de tâches complet qui traite toutes ces opérations et affiche l'état final.

Exigences :

  • Lire la première entrée contenant les descriptions des tâches séparées par des virgules (par exemple, Buy groceries,Call dentist,Finish homework)
  • Diviser la chaîne par les virgules et créer un vecteur mutable avec ces tâches initiales
  • Lire la deuxième entrée et ajouter cette nouvelle tâche au vecteur en utilisant .push()
  • Lire la troisième entrée, la convertir en un entier (numéro de tâche à consulter, basé sur 1)
  • Lire la quatrième entrée, la convertir en un entier (numéro de tâche à supprimer, basé sur 1)
  • Supprimer la tâche spécifiée en convertissant l'index basé sur 1 en index basé sur 0 et en utilisant .remove()
  • Afficher Total tasks: X où X est le nombre final de tâches
  • Afficher Viewing task: Y où Y est le numéro de tâche qui a été demandé pour consultation
  • Parcourir la liste finale des tâches et afficher chaque tâche avec son numéro (basé sur 1)
  • Pour la tâche correspondant au numéro de consultation (après les ajustements de suppression), afficher : [X] [task description] (selected)
  • Pour toutes les autres tâches, afficher : [X] [task description]

Entrée :

  • Première ligne : Descriptions des tâches séparées par des virgules (par exemple, Buy groceries,Call dentist,Finish homework)
  • Deuxième ligne : Une nouvelle tâche à ajouter (par exemple, Study for exam)
  • Troisième ligne : Un entier représentant le numéro de la tâche à consulter (indexation basée sur 1)
  • Quatrième ligne : Un entier représentant le numéro de la tâche à supprimer (indexation basée sur 1)

Sortie :

  • Première ligne : Total tasks: X où X est le nombre final de tâches
  • Deuxième ligne : Viewing task: Y où Y est le numéro de consultation demandé
  • Lignes suivantes : Chaque tâche avec son numéro au format [X] [task description]
  • La tâche sélectionnée (correspondant au numéro de consultation) doit avoir (selected) ajouté à la fin

Essayez vous-même

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Lire les tâches initiales séparées par des virgules
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Lire la nouvelle tâche à ajouter
    let new_task = lines.next().unwrap().unwrap();
    
    // Lire le numéro de la tâche à afficher (basé sur 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Lire le numéro de la tâche à supprimer (basé sur 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Écrivez votre code ci-dessous
    // 1. Diviser initial_tasks par les virgules et créer un vecteur mutable
    // 2. Ajouter new_task au vecteur
    // 3. Supprimer la tâche à remove_number (convertir en index basé sur 0)
    // 4. Afficher le nombre total de tâches et les informations de la tâche consultée
    // 5. Parcourir la liste finale et afficher chaque tâche
    
}

Toutes les leçons de Logic & Flow