Menu
Coddy logo textTech

まとめ:要素の検索

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

challenge icon

チャレンジ

簡単

2つの入力を受け取ります。最初の入力はカンマで区切られた数値のリスト(例:10,20,30,40)で、2番目の入力は検索対象となるターゲットの数値です。カンマ区切りの数値をパースしてベクタ(vector)に格納し、ターゲットの数値を検索してください。.iter().position() を使用してターゲット数値のインデックスを見つけます。これは Option<usize> を返します。match を使用して両方のケースを処理し、適切なメッセージを出力してください。

要件:

  • 最初の入力(カンマ区切りの数値)を読み込み、空白をトリミングする
  • 入力をカンマで分割し、各部分を i32 にパースしてベクタを作成する
  • 2番目の入力(ターゲット数値)を読み込み、空白をトリミングする
  • ターゲット数値を i32 にパースする
  • .iter().position(|&x| x == target) を使用してベクタ内のターゲットを検索する
  • match 式を使用して、.position() から返された Option を処理する
  • Some(index) のアームでは、次のように出力する: Found at index [index]
  • None のアームでは、次のように出力する: Not found

入力:

  • 1行目: カンマ区切りの数値(例: 10,20,30,40
  • 2行目: 検索対象のターゲット数値(例: 30

出力:

  • ターゲットが見つかった場合: Found at index [index]
  • ターゲットが見つからない場合: Not found

自分で試してみよう

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // カンマ区切りの数値を読み込む
    let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
    
    // ターゲットとなる数値を読み込む
    let target_input = lines.next().unwrap().unwrap().trim().to_string();
    
    // カンマ区切りの数値をパースしてベクタに格納する
    let numbers: Vec<i32> = numbers_input
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // ターゲットとなる数値をパースする
    let target: i32 = target_input.parse().unwrap();
    
    // TODO: 以下にコードを記述してください
    // .iter().position() を使用してターゲットを見つけ、match を使用して結果を処理します
    
}

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