use std::{num::NonZeroU8, time::Instant};
use engine::{ActualLimit, Engine, EvalInfo, EvaluationSettings, Frontend};
use mimalloc::MiMalloc;
use model::CheckersBitBoard;
#[global_allocator]
static ALLOCATOR: MiMalloc = MiMalloc;
const DEPTH: u8 = 19;
struct BasicFrontend;
impl Frontend for BasicFrontend {
fn debug(&self, msg: &str) {
println!("{msg}");
}
fn info(&self, _info: EvalInfo) {}
fn report_best_move(&self, best_move: model::Move) {
println!("{best_move}");
}
}
fn main() {
let engine = Box::leak(Box::new(Engine::new(1_000_000, &BasicFrontend)));
let start = Instant::now();
engine.evaluate(
None,
EvaluationSettings {
restrict_moves: None,
ponder: false,
clock: engine::Clock::Unlimited,
search_until: engine::SearchLimit::Limited(ActualLimit {
nodes: None,
depth: Some(NonZeroU8::new(DEPTH).unwrap()),
time: None,
}),
},
);
println!("{} ms", start.elapsed().as_millis());
engine.set_position(CheckersBitBoard::new(
4294967295,
2206409603,
3005432691,
model::PieceColor::Light,
));
engine.evaluate(
None,
EvaluationSettings {
restrict_moves: None,
ponder: false,
clock: engine::Clock::Unlimited,
search_until: engine::SearchLimit::Limited(ActualLimit {
nodes: None,
depth: Some(NonZeroU8::new(DEPTH).unwrap()),
time: None,
}),
},
);
// TODO test FEN W:W19,20,21,24,25,26,27,28,29,30,32:B1,2,4,6,7,8,9,11,12,15,17,18
println!("test");
engine.set_position(CheckersBitBoard::new(
3615436253,
75309505,
0,
model::PieceColor::Light,
));
engine.evaluate(
None,
EvaluationSettings {
restrict_moves: None,
ponder: false,
clock: engine::Clock::Unlimited,
search_until: engine::SearchLimit::Limited(ActualLimit {
nodes: None,
depth: Some(NonZeroU8::new(DEPTH).unwrap()),
time: None,
}),
},
);
}
|