Código final
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 19 de 66.
Desafío
FácilRecibirás cuatro entradas que representan un flujo de trabajo completo de una lista de tareas: primero, una lista de tareas iniciales separadas por comas; segundo, una nueva tarea para añadir; tercero, un número de tarea para visualizar (indexación basada en 1); y cuarto, un número de tarea para eliminar (indexación basada en 1). Crea un gestor de lista de tareas completo que procese todas estas operaciones y muestre el estado final.
Requisitos:
- Lee la primera entrada que contiene descripciones de tareas separadas por comas (por ejemplo,
Buy groceries,Call dentist,Finish homework) - Divide la cadena por comas y crea un vector mutable con estas tareas iniciales
- Lee la segunda entrada y añade esta nueva tarea al vector usando
.push() - Lee la tercera entrada, conviértela en un entero (número de tarea basado en 1 para visualizar)
- Lee la cuarta entrada, conviértela en un entero (número de tarea basado en 1 para eliminar)
- Elimina la tarea especificada convirtiendo el índice basado en 1 a basado en 0 y usando
.remove() - Imprime
Total tasks: Xdonde X es el número final de tareas - Imprime
Viewing task: Ydonde Y es el número de tarea que se solicitó visualizar - Itera a través de la lista de tareas final e imprime cada tarea con su número (basado en 1)
- Para la tarea que coincida con el número de visualización (después de los ajustes por eliminación), imprime:
[X] [task description] (selected) - Para todas las demás tareas, imprime:
[X] [task description]
Entrada:
- Primera línea: Descripciones de tareas separadas por comas (por ejemplo,
Buy groceries,Call dentist,Finish homework) - Segunda línea: Una nueva tarea para añadir (por ejemplo,
Study for exam) - Tercera línea: Un entero que representa el número de tarea a visualizar (indexación basada en 1)
- Cuarta línea: Un entero que representa el número de tarea a eliminar (indexación basada en 1)
Salida:
- Primera línea:
Total tasks: Xdonde X es el número final de tareas - Segunda línea:
Viewing task: Ydonde Y es el número de visualización solicitado - Líneas siguientes: Cada tarea con su número en el formato
[X] [task description] - La tarea seleccionada (que coincida con el número de visualización) debe tener
(selected)al final
Pruébalo tú mismo
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leer las tareas iniciales separadas por comas
let initial_tasks = lines.next().unwrap().unwrap();
// Leer la nueva tarea para añadir
let new_task = lines.next().unwrap().unwrap();
// Leer el número de tarea para ver (basado en 1)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Leer el número de tarea para eliminar (basado en 1)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Escribe tu código abajo
// 1. Dividir initial_tasks por comas y crear un vector mutable
// 2. Añadir new_task al vector
// 3. Eliminar la tarea en remove_number (convertir a índice basado en 0)
// 4. Imprimir el total de tareas y la información de la tarea consultada
// 5. Iterar a través de la lista final e imprimir cada tarea
}Todas las lecciones de Logic & Flow
1Flujo de control avanzado
La expresión 'match'Coincidencia de múltiples valoresCoincidencia de rangosLa expresión 'if let'Bucles como expresionesResumen - Analizador de comandos simple4Agrupando datos con Structs
¿Qué es un Struct?Visión general de los StructsAcceso a los campos de un StructStructs mutablesStructs como parámetros de funcionesStructs de tuplaResumen - Crear un Struct de Libro7Manejo de errores con 'Result'
¿Qué es un 'Result'?Uso de 'match' con 'Result'is_ok() e is_err()Atajos: unwrap y expectEl operador de signo de interrogación '?'Parsing de Strings a númerosResumen - Función de división segura10Closures y funciones anónimas
¿Qué es un Closure?Definir un Closure simpleClosures con parámetrosCapturar el entornoResumen - Closure sumador simple2Introducción a los vectores
¿Qué es un vector?Crear un vectorAñadir elementos con pushAcceder a los elementos de un vectorIterar sobre un vectorIteración mutableEliminar elementosResumen: Rastreador de puntuación básico5Pares clave-valor con Hash Maps
¿Qué es un Hash Map?Crear un Hash MapInsertar pares clave-valorAcceder a los valoresIterar sobre un Hash MapActualizar un valorEliminar un parRepaso: Contador de palabras8Proyecto: Inventario simple de artículos
Configuración del proyectoAgregar un artículoVerificar el stockVender un artículoUniendo todo3Lista de tareas en la línea de comandos
Configuración del proyectoAñadir una tareaVer todas las tareasEliminar una tareaCódigo final