diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-02-02 00:03:30 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-02-02 00:03:30 +0100 |
| commit | e77d75ea02abd2c8fd7e04af9f82063eb54d9eca (patch) | |
| tree | 4f3c9cc63b5c4ee284a4f7908803997fcf0bdc72 /src/main.rs | |
| parent | 2b0619720474ce8191326751950442b6ba45da26 (diff) | |
| download | connect4-e77d75ea02abd2c8fd7e04af9f82063eb54d9eca.tar.gz connect4-e77d75ea02abd2c8fd7e04af9f82063eb54d9eca.tar.bz2 connect4-e77d75ea02abd2c8fd7e04af9f82063eb54d9eca.zip | |
Added reading position form stdin, Added cache
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index 1560bbf..f7b6a6e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,19 +1,45 @@ +use std::io; +use std::io::prelude::*; +use std::collections::HashMap; + pub mod position; pub mod solve; use position::Position; use solve::solve; -fn main() { - - +fn main() { + for result in io::stdin().lock().lines() { + let line = result.unwrap(); + let fields: Vec<&str> = line.split_ascii_whitespace().collect(); + if fields.len() != 2 { + eprintln!("wrong line format {:?}", line); + continue + } + let expected_score = match fields[1].parse::<i32>() { + Ok(n) => n, + Err(msg) => { + eprintln!("wrong score format {:?}: {}", fields[1], msg); + continue; + } + }; + match fields[0].parse::<Position>() { + Ok(pos) => { + // println!("{:?}", pos); + let mut cache = HashMap::with_capacity(30000); + println!("score: {:3} {:3}", solve(pos, -10000, 10000, &mut cache), expected_score); + } + Err(msg) => + eprintln!("wrong score format {:?}: {}", fields[1], msg), + } + } - let mut p = Position::from("7422341735647741166133573473242566"); + // let mut p = "7422341735647741166133573473242566".parse::<Position>().unwrap(); // p = p.play(2); // p = p.play(2); // p = p.play(1); // p = p.play(5); // println!("{:?}", p); - println!("{}", solve(p.clone(), -10000, 100000)); + // println!("{}", solve(p.clone(), -10000, 100000)); } |
