『アルゴリズムとデータ構造』を 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
コメント