Menu
Coddy logo textTech

最終コード

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

challenge icon

チャレンジ

簡単

4つの入力(1つ目はカンマ区切りの初期タスクリスト、2つ目は追加する新しいタスク、3つ目は表示するタスク番号(1から始まるインデックス)、4つ目は削除するタスク番号(1から始まるインデックス))を受け取り、ToDoリストのワークフローを完成させます。これらすべての操作を処理し、最終的な状態を表示するToDoリストマネージャーを作成してください。

要件:

  • カンマ区切りのタスク説明(例: Buy groceries,Call dentist,Finish homework)を含む最初の入力を読み込みます。
  • 文字列をカンマで分割し、これらの初期タスクを含む可変(mutable)なベクタを作成します。
  • 2番目の入力を読み込み、.push() を使用してこの新しいタスクをベクタに追加します。
  • 3番目の入力を読み込み、整数(表示する1から始まるタスク番号)に変換します。
  • 4番目の入力を読み込み、整数(削除する1から始まるタスク番号)に変換します。
  • 1から始まるインデックスを0から始まるインデックスに変換し、.remove() を使用して指定されたタスクを削除します。
  • Total tasks: X と出力します(Xは最終的なタスク数)。
  • Viewing task: Y と出力します(Yは表示を要求されたタスク番号)。
  • 最終的なタスクリストを反復処理し、各タスクをその番号(1から始まる)とともに出力します。
  • 表示番号と一致するタスク(削除調整後)については、[X] [task description] (selected) と出力します。
  • それ以外のすべてのタスクについては、[X] [task description] と出力します。

入力:

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

出力:

  • 1行目: Total tasks: X (Xは最終的なタスク数)
  • 2行目: Viewing task: Y (Yは要求された表示番号)
  • 続く行: [X] [task description] の形式で各タスクとその番号を表示
  • 選択されたタスク(表示番号と一致するもの)には、末尾に (selected) を追加します。

自分で試してみよう

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // カンマ区切りの初期タスクを読み込む
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // 追加する新しいタスクを読み込む
    let new_task = lines.next().unwrap().unwrap();
    
    // 表示するタスク番号を読み込む(1から始まる番号)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // 削除するタスク番号を読み込む(1から始まる番号)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: 以下にコードを記述してください
    // 1. initial_tasksをカンマで分割し、可変ベクトルを作成する
    // 2. new_taskをベクトルに追加する
    // 3. remove_numberのタスクを削除する(0から始まるインデックスに変換すること)
    // 4. 合計タスク数と表示対象のタスク情報を出力する
    // 5. 最終的なリストを反復処理し、各タスクを出力する
    
}

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