Author: Gerd Isenberg
Date: 02:17:48 08/16/02
Go up one level in this thread
On August 16, 2002 at 04:31:32, Sune Fischer wrote: >On August 15, 2002 at 17:13:23, Gerd Isenberg wrote: > >Looks interesting :) > >>bool sameSquareColor(int sq1, int sq2) { >> return (combidist[sq1][sq2] & 1) == 0;} > >I think this one is faster without table lookup though: > >bool sameSquareColor(int sq1, int sq2) { > return (((sq1^sq2)&1)^1); // or (!((sq1^sq2)&1)); >} > >The above is derived from this observation: >If sq1 and sq2 have the same color, they are equivalent modulo 2 since equals >are black and unequals white (at least in my notation). > >so you can do >bool isSquareWhite(int sq) { > return (sq&1); >} > >(I didn't test it, so check it:) > >-S. Hi Sune, i think your function don't considers the odd/even change between the ranks. Square 0(A1) is black, 1(B1) is white... 7(H1)-is white Square 8(A2) is white!... // return: 0 = white square, 1 = black square int colorOfsquare (int sq) { return (sq^(sq>>3))&1;} bool sameSquareColor(int sq1, int sq2) { return colorOfsquare(sq1) == colorOfsquare(sq2);} or bool sameSquareColor(int sq1, int sq2) { return ((sq1^sq2^((sq1^sq2)>>3))&1) == 0;} Gerd > > > >>Ok, there are lot of other ways to do it, but i like the information >>"overloading" of this distance values. And i have a lot of lines inside my >>program with this (dist == A && taxi == B) statements. >> >>Cheers, >>Gerd
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.