blob: eba640ea804d66d18cd166a7a5bd5b18e40bf2a8 (
plain)
use ai::{CheckersBitBoard, Move, PossibleMoves};
use rayon::prelude::*;
use std::fmt::{Display, Formatter};
#[derive(Clone)]
struct PerftResult {
result: Vec<(Move, usize)>,
}
pub fn positions(board: CheckersBitBoard, depth: usize) -> usize {
let moves = PossibleMoves::moves(board);
if depth == 0 {
1
} else {
let mut total = 0;
for current_move in moves {
// safety: we got this move out of the list of possible moves, so it's definitely valid
let board = unsafe { current_move.apply_to(board) };
total += positions(board, depth - 1);
}
total
}
}
|