全タスクの表示
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 17/66。
チャレンジ
簡単2つの入力を受け取ります。1つ目はカンマ区切りの既存のタスクリスト、2つ目は表示するタスク番号(1から始まるインデックス)です。両方の入力を読み取り、タスクからベクタを作成し、要求されたタスクをハイライトして、すべてのタスクを番号付きで表示してください。
要件:
- カンマ区切りのタスクの説明を含む最初の入力を読み取ります(例:
Buy groceries,Call dentist,Finish homework) - 文字列をカンマで分割して、個々のタスクを取得します
- ベクタを作成し、各タスクをそれに追加します
- 2番目の入力を読み取り、整数に変換します(ハイライトするタスク番号、1から始まるインデックスを使用)
- タスクの総数を次の形式で出力します:
Total tasks: X - ベクタを反復処理し、各タスクをその番号(1から始まる)と共に出力します
- 要求されたタスク番号については、次の形式で出力します:
[X] [task description] (selected) - 他のすべてのタスクについては、次の形式で出力します:
[X] [task description]
入力:
- 1行目: カンマ区切りのタスクの説明(例:
Buy groceries,Call dentist,Finish homework) - 2行目: ハイライトするタスク番号を表す整数(1から始まるインデックス)
出力:
- 1行目:
Total tasks: X(Xはタスクの総数) - 続く行: 各タスクとその番号を
[X] [task description]の形式で出力 - 選択されたタスクには、末尾に
(selected)を追加する必要があります。
自分で試してみよう
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// カンマ区切りのタスクを読み込む
let tasks_input = lines.next().unwrap().unwrap();
// ハイライトするタスク番号を読み込む
let task_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: 以下にコードを記述してください
// tasks_inputをカンマで分割し、ベクトルを作成します
// タスクの総数を出力します
// タスクをループで回し、各タスクを番号と共に出力します
// 選択されたタスクに " (selected)" を追加してハイライトします
}