use kish::{Board, Square, Team};
fn main() {
let board = Board::from_squares(
Team::White,
&[Square::D4, Square::E3],
&[Square::D5, Square::F6],
&[Square::D4], );
println!("Custom position:");
println!("{board}");
println!();
let white_count = board.state.pieces[0].count_ones();
let black_count = board.state.pieces[1].count_ones();
let king_count = board.state.kings.count_ones();
println!("White pieces: {white_count}");
println!("Black pieces: {black_count}");
println!("Kings: {king_count}");
println!();
let actions = board.actions();
println!("Legal moves for {}:", board.turn);
for action in &actions {
let detailed = action.to_detailed(board.turn, &board.state);
let mut details = Vec::new();
if detailed.is_capture() {
details.push(format!("captures {}", detailed.path_len() - 1));
}
if detailed.is_promotion() {
details.push("promotes".to_string());
}
let suffix = if details.is_empty() {
String::new()
} else {
format!(" ({})", details.join(", "))
};
println!(" {}{}", detailed.to_notation(), suffix);
}
}