Rajah's board representation is 0x88[10], to take advantage of testing those two bits in target square traversal of move generation[11], and specially for the unique square difference property for attack detection. In his article, Valavan gives the C source snippet of a typical inner loop in move generation, e.g. a white bishop moving diagonally up:
target_sq = current_sq;while(1){
target_sq +=15;/* the move up and left */if( target_sq &0x88)break;/* check for out of bounds condition */if( board[target_sq]== empty){/* add a non-capture move to the move list */}else{if( board[target_sq]& black_piece {/* add a capture move to the move list */}break;}}
Table of Contents
Rajah (RajahX),
a chess program by Valavan Manohararajah. Its development started from scratch in early 1996. Rajah played the DOCCC 1996 and the Aegon 1997, and its design, like many programs influenced by Chess 4.5 [1], was described in ICCA Journal, Vol. 20, No. 2 [2]. Rajah is a leaf-evaluator and performs no pre-processing at the root or interiour of the tree. Rajah was further subject of research in the authors Master's Thesis on Parallel Search in 2001 from University of Toronto [3].
Photos
Search
Rajah uses a full width Principal Variation Search followed by Quiescence Search [5], where the move generator only generates captures and promotions to a queen, where a first layer in pruning removes any capture that fails to bring the material score above a value based on alpha [6]. A second layer in QS performs SEE, to prune all moves with a SEE values less than zero [7]. Additionally, Rajah applies Null Move Pruning similar as described by Donninger in 1993 [8] with a depth reduction of two. It extends checks, recapturers and passed pawn moves to the 7th and 8th rank. Extension are switched off, when the search depth exceeds two times the current iteration depth.The Transposition table is used in both full width and quiescence search, the replacement strategy is the one given by Dennis Breuker et al. in 1994 [9]. The killer and history heuristic is used in the full-width search only.
0x88
Rajah's board representation is 0x88 [10], to take advantage of testing those two bits in target square traversal of move generation [11], and specially for the unique square difference property for attack detection. In his article, Valavan gives the C source snippet of a typical inner loop in move generation, e.g. a white bishop moving diagonally up:Publications
Forum Posts
References
What links here?
Up one level