Current section

Files

Jump to
gchess src gchess.gleam
Raw

src/gchess.gleam

import gleam/list
import game_server
// pub fn main() {
// let server = new_server()
// new_game_from_fen(
// server,
// "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8",
// )
// disable_status(server)
// io.println(int.to_string(perft(server, 2)))
// }
pub fn perft(game_server_subject, depth) {
case depth {
0 -> 1
_ -> {
let moves = game_server.all_legal_moves(game_server_subject)
let nodes =
list.fold(
moves,
0,
fn(nodes, move) {
game_server.apply_move(game_server_subject, move)
let nodes = nodes + perft(game_server_subject, depth - 1)
game_server.undo_move(game_server_subject)
nodes
},
)
nodes
}
}
}