Menu
Coddy logo textTech

Código Final

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 19 de 66.

challenge icon

Desafio

Fácil

Você receberá quatro entradas representando um fluxo de trabalho completo de uma lista de tarefas: primeiro, uma lista de tarefas iniciais separadas por vírgulas; segundo, uma nova tarefa a ser adicionada; terceiro, o número de uma tarefa para visualizar (indexação baseada em 1); e quarto, o número de uma tarefa para remover (indexação baseada em 1). Crie um gerenciador de lista de tarefas completo que processe todas essas operações e exiba o estado final.

Requisitos:

  • Leia a primeira entrada contendo descrições de tarefas separadas por vírgulas (ex: Buy groceries,Call dentist,Finish homework)
  • Divida a string por vírgulas e crie um vetor mutável com essas tarefas iniciais
  • Leia a segunda entrada e adicione esta nova tarefa ao vetor usando .push()
  • Leia a terceira entrada, converta-a em um número inteiro (número da tarefa para visualizar, baseado em 1)
  • Leia a quarta entrada, converta-a em um número inteiro (número da tarefa para remover, baseado em 1)
  • Remova a tarefa especificada convertendo o índice baseado em 1 para baseado em 0 e usando .remove()
  • Imprima Total tasks: X onde X é o número final de tarefas
  • Imprima Viewing task: Y onde Y é o número da tarefa que foi solicitado para visualizar
  • Itere pela lista de tarefas final e imprima cada tarefa com seu número (baseado em 1)
  • Para a tarefa que corresponde ao número de visualização (após os ajustes de remoção), imprima: [X] [task description] (selected)
  • Para todas as outras tarefas, imprima: [X] [task description]

Entrada:

  • Primeira linha: Descrições de tarefas separadas por vírgulas (ex: Buy groceries,Call dentist,Finish homework)
  • Segunda linha: Uma nova tarefa para adicionar (ex: Study for exam)
  • Terceira linha: Um número inteiro representando o número da tarefa para visualizar (indexação baseada em 1)
  • Quarta linha: Um número inteiro representando o número da tarefa para remover (indexação baseada em 1)

Saída:

  • Primeira linha: Total tasks: X onde X é o número final de tarefas
  • Segunda linha: Viewing task: Y onde Y é o número de visualização solicitado
  • Linhas seguintes: Cada tarefa com seu número no formato [X] [task description]
  • A tarefa selecionada (correspondente ao número de visualização) deve ter (selected) anexado

Experimente você mesmo

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Ler as tarefas iniciais separadas por vírgula
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Ler a nova tarefa para adicionar
    let new_task = lines.next().unwrap().unwrap();
    
    // Ler o número da tarefa para visualizar (baseado em 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Ler o número da tarefa para remover (baseado em 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Escreva seu código abaixo
    // 1. Dividir initial_tasks por vírgulas e criar um vetor mutável
    // 2. Adicionar a new_task ao vetor
    // 3. Remover a tarefa em remove_number (converter para índice baseado em 0)
    // 4. Imprimir o total de tarefas e as informações da tarefa visualizada
    // 5. Iterar pela lista final e imprimir cada tarefa
    
}

Todas as lições de Logic & Flow