Current section
Files
Jump to
Current section
Files
src/gchess.erl
-module(gchess).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
-export([perft/2]).
-spec perft(gleam@erlang@process:subject(game_server:message()), integer()) -> integer().
perft(Game_server_subject, Depth) ->
case Depth of
0 ->
1;
_ ->
Moves = game_server:all_legal_moves(Game_server_subject),
Nodes@2 = gleam@list:fold(
Moves,
0,
fun(Nodes, Move) ->
game_server:apply_move(Game_server_subject, Move),
Nodes@1 = Nodes + perft(Game_server_subject, Depth - 1),
game_server:undo_move(Game_server_subject),
Nodes@1
end
),
Nodes@2
end.