Menu
Coddy logo textTech

タスクの削除

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 18/66。

challenge icon

チャレンジ

簡単

3つの入力を受け取ります。1つ目はカンマ区切りの既存のタスクリスト、2つ目は削除するタスク番号(1から始まるインデックス)、3つ目は削除後に追加する新しいタスクです。すべての入力を読み込み、タスクからベクタ(vector)を作成し、指定されたタスクを削除し、新しいタスクを追加して、更新されたタスクリストを表示してください。

要件:

  • カンマ区切りのタスク説明(例: Buy groceries,Call dentist,Finish homework)を含む最初の入力を読み込みます。
  • 文字列をカンマで分割して、個々のタスクを取得します。
  • 可変(mutable)なベクタを作成し、各タスクをそこに追加します。
  • 2番目の入力を読み込み、整数に変換します(削除するタスク番号、1から始まるインデックスを使用)。
  • 1から始まるインデックスを0から始まるインデックスに変換し、.remove() を使用してそのインデックスのタスクを削除します。
  • 追加する新しいタスクを含む3番目の入力を読み込みます。
  • .push() を使用して、新しいタスクをベクタに追加します。
  • タスクの総数を次の形式で出力します: Total tasks: X
  • 各タスクを個別の行に次の形式で出力します: Task: [task description]

入力:

  • 1行目: カンマ区切りのタスク説明(例: Buy groceries,Call dentist,Finish homework
  • 2行目: 削除するタスク番号を表す整数(1から始まるインデックス)
  • 3行目: 追加する新しいタスク(例: Study for exam

出力:

  • 1行目: Total tasks: X (Xは削除と追加を行った後のタスクの総数)
  • 続く行: 各タスクを Task: [task description] として出力

自分で試してみよう

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // カンマ区切りのタスクを読み込む
    let tasks_input = lines.next().unwrap().unwrap();
    
    // 削除するタスク番号を読み込む(1から始まるインデックス)
    let task_to_remove = lines.next().unwrap().unwrap();
    let task_number: usize = task_to_remove.trim().parse().unwrap();
    
    // 追加する新しいタスクを読み込む
    let new_task = lines.next().unwrap().unwrap();
    
    // TODO: 以下にコードを記述してください
    // tasks_inputをカンマで分割し、可変ベクトルを作成する
    // 指定されたインデックスのタスクを削除する(1ベースを0ベースに変換)
    // 新しいタスクをベクトルに追加する
    
    // 結果を出力する
    // 合計タスク数を次の形式で出力する: Total tasks: X
    // 各タスクを次の形式で出力する: Task: [task description]
}

Logic & Flowのすべてのレッスン