Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: unique distance relationship

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.