Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Crafty - did it do more harm than good??

Author: Uri Blass

Date: 08:05:12 11/28/03

Go up one level in this thread


On November 28, 2003 at 10:45:54, Grzegorz Sidorowicz wrote:

>I agree with you.
>But on other hand for me Crafty source code is trash :-)
>I don't understand it :-) and it can't help me :)))
>...and it is not only my opinion....it is too big, too complicated.


It could help me inspite of the fact that I did not understand most of it.

I remember that when I implemented killer moves I look at crafty's code and
copied phase[ply] from it.

I also have constants for the different phases like goodcapture and
firstkillermove that I probably copied from crafty(I guess that for some people
the fact that I copied some single words means that I have a crafty clone).

I also looked at its evaluation and implemented smaller bonus for blocked passed
pawns(of course in that case I could not copy and paste but I used the same
idea).

If you need another proof that movei is a crafty clone by the standard of some
guys then the following line is copied from crafty if I remember correctly
(Movei is not based on bitboards but I use bitboards for pawn structure).

typedef unsigned __int64 BitBoard;

The most significant proof that movei is a crafty clone is that I have the
following functions for bitboards(the last 2 are not copied directly from crafty
but are basically based on Crafty's code when I believe that the first one is
copied from Crafty)

I cannot find more convincing evidence that movei is a crafty clone but I guess
that for some guys the evidence that I give in this post is convincing enough.

int PopCount(register BitBoard a) {
  register int c=0;

  while(a) {
    c++;
    a &= a - 1;
  }
  return(c);
}


int smallest_pow(BitBoard arg1)
{
    if (arg1&65535)
      return (smallest_power[arg1&65535]);

    if ((arg1>>16)&65535)
      return (smallest_power[(arg1>>16)&65535]+16);

    if ((arg1>>32)&65535)
     return (smallest_power[(arg1>>32)&65535]+32);
	 return (smallest_power[(arg1>>48)]+48);
}

int biggest_pow(BitBoard arg1)
{
	if (arg1>>48)
		return biggest_power[(arg1>>48)]+48;
	if (arg1>>32)
			return biggest_power[(arg1>>32)]+32;
	if (arg1>>16)
		return biggest_power[(arg1>>16)]+16;
	return biggest_power[arg1];
}

Uri



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.