Rustで二分探索法 (2)

アルゴリズムとデータ構造』を Rust で実装してみるシリーズ。6章の二分探索法。

前回 → https://quantized-cube.com/rust-binary-search-01

今回は年齢当てゲーム。

lib.rs

use proconio::input;

/// 年齢当てゲームの実装
pub fn code_6_3() {
    println!("Start Game!");

    // A さんの数の候補を表す区間を、[left, right) と表す
    let mut left: i64 = 20;
    let mut right: i64 = 36;

    // A さんの数を 1 つに絞れないうちは繰り返す
    while right - left > 1 {
        let mid = left + (right - left) / 2; // 区間の真ん中

        // mid 以上かを聞いて、回答を yes/no で受け取る
        println!("Is the age less than {}? (yes / no)", mid);
        input! {
            ans: String,
        }

        // 回答に応じて、ありうる数の範囲を絞る
        if ans == "yes" {
            right = mid;
        } else {
            left = mid;
        }
    }

    // ズバリ当てる!
    println!("The age is {}!", left);
}

main.rs

mod lib;

fn main() {
    lib::code_6_3();
}

GitHub のリポジトリはこちら https://github.com/quantized-cube/book_algorithm_solution_rust

コメント

タイトルとURLをコピーしました