Technical
Perft Numbers: (let me know if you find any errors)
Chess:
ply=1, positions=20
ply=2, positions=400
ply=3, positions=8902
ply=4, positions=197281
ply=5, positions=4865609
ply=6, positions=119060324
Capablanca Chess:
ply=1, positions=28
ply=2, positions=784
ply=3, positions=25228
ply=4, positions=805128
ply=5, positions=28741319
ply=6, positions=1015802437
Xiangqi:
ply=1, positions=44
ply=2, positions=1920
ply=3, positions=79666
ply=4, positions=3290240
ply=5, positions=133312995
ply=6, positions=5392831844
Shogi:
ply=1, positions=30
ply=2, positions=900
ply=3, positions=25470
ply=4, positions=719731
ply=5, positions=19861490
ply=6, positions=547581517
Crazyhouse:
ply=1, positions=20
ply=2, positions=400
ply=3, positions=8902
ply=4, positions=197281
ply=5, positions=4888832
ply=6, positions=120812942
Programming language of TJchess: C
Some common algorithms/techniques used in TJchess:
alpha-beta
null-move
quiescent search
hash table
pawn hash table
iterative deepening
internal iterative deepening
killer moves
extensions
piece square tables
static exchange evaluation
and others…
Some common algorithms/techniques not used in TJchess (so far):
bitboards
“0×88″ move generation
piece lists
pvs/negascout
reductions
aspiration windows
“unmake move” routine
and others…