Skip to main content

perft/
perft.rs

1use std::env;
2
3fn main() {
4    atomic_movegen::attacks::init();
5    let args: Vec<String> = env::args().collect();
6    if args.len() < 3 {
7        eprintln!("Usage: perft <fen> <depth>");
8        std::process::exit(1);
9    }
10
11    let fen = &args[1];
12    let depth: u32 = args[2]
13        .parse()
14        .expect("Depth must be a non-negative integer");
15
16    match atomic_movegen::board::Board::from_fen(fen) {
17        Ok(mut board) => {
18            let nodes = atomic_movegen::perft(&mut board, depth);
19            println!("{}", nodes);
20        }
21        Err(e) => {
22            eprintln!("Error parsing FEN: {}", e);
23            std::process::exit(1);
24        }
25    }
26}