Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What constitutes a clone?

Author: Uri Blass

Date: 17:14:25 02/15/05

Go up one level in this thread


On February 15, 2005 at 19:40:18, Thomas Mayer wrote:

>Hi John,
>
>>> I want to start near the end of your posting:
>
>>>> (Forget about Nalimov's EGTB probing code and any other code that can be
>>>> used with permission).
>
>>> THIS is the point where clones are splitted. When everything happens with
>>> permission of the author of the original source and with mentioning him
>>> everywhere, then I am fine with that. Example: Beowulf (original) and
>>> Horizon... or TSCP (original) and Trace (where I believe that the newer
>>> Trace have not much TSCP left in them)
>>> Here, everything is fine...
>
>>> If there is no permission and/or no mentioning copying source-code is
>>> definitely a "no-no" !
>
>>> So the answers:
>
>>>> If the author took Crafty and completely rewrote the evaluation code and
>>>> nothing else, would it be a clone?
>
>>> CLONE
>
>>>> How about if the author rewrote the evaluation code and search algorithm
>>>> only, but left the hashing code, et. al.?
>
>>> CLONE
>
>>>> How about if the author rewrote everything EXCEPT for the evaluation?
>
>>> CLONE
>
>>>> How about if the author rewrote everything EXCEPT for Crafty's evaluation
>>>> of passed pawns?
>
>>> CLONE
>
>>> Why this all ? Well, it's simple: usually you can't take part of Crafty's
>>> code and implement that in your own engine -> it would simply not fit in
>>> your internal datastructures... if it does, then it is suspicious...
>
>> Fair enough, and an easy definition to understand.
>
>> But let's say that an author took TSCP, modified it to some degree and gave
>> Tom credit. Even though you do not call that a clone, would you still say it
>> is acceptable for it to be entered in a tournament like the CCT? Do you think
>> others would complain?
>
>Well, here it starts to get complicated... It depends somehow on the rules: E.g.
>in the official tournaments by the ICGA and those which take these rules (e.g.
>IPCCC and I think Dutch open) it would be problematic to start with just a
>modified program. Or the author of the original must be also mentioned as author
>and then he usually can not start with his own creation -> one program per one
>author...
>TSCP is maybe a bad example, because usually you must increase it's strength a
>lot befor you can enter with it in a tourney -> and therefor the final version
>would not share much with the original... One well known example here is Movei,
>which has started with TSCP, but I would really wonder if there is a single line
>of TSCP left in it's chess code... (Might be more in the user interface) ->
>anyway, this is well known because Uri told this initially and with given
>respect this is what Tom had in mind with his fine TSCP -> to give beginners a
>starting point.

This is not exactly correct.

I want to make clear that I did not started by taking tscp and modifying it.
I started with part of the data structure of tscp but part of the data structure
of tscp was never part of movei(I had never mailbox array in movei because I
started from only writing a different move generator).

Movei still share part of the data varaibles of tscp.

int side;
int ply;
int hply;
int first_move[MAX_PLY];
int castle;
int fifty;
int nodes;
int follow_pv;
int pv_length[MAX_PLY];

This is always part of movei from the beginning(the content is not exactly the
same as tscp but the idea is taken from tscp)

const int castle_mask[64]={
	13,15,15,15,12,15,15,14,
	15,15,15,15,15,15,15,15,
	15,15,15,15,15,15,15,15,
	15,15,15,15,15,15,15,15,
	15,15,15,15,15,15,15,15,
	15,15,15,15,15,15,15,15,
	15,15,15,15,15,15,15,15,
	7,15,15,15,3,15,15,11};


Tscp has
int castle_mask[64] = {
	 7, 15, 15, 15,  3, 15, 15, 11,
	15, 15, 15, 15, 15, 15, 15, 15,
	15, 15, 15, 15, 15, 15, 15, 15,
	15, 15, 15, 15, 15, 15, 15, 15,
	15, 15, 15, 15, 15, 15, 15, 15,
	15, 15, 15, 15, 15, 15, 15, 15,
	15, 15, 15, 15, 15, 15, 15, 15,
	13, 15, 15, 15, 12, 15, 15, 14
};





Never used in Movei from the beginning and is part of tscp
If you want to modify tscp and delete these arrays you have to modify a lot of
code

int mailbox[120] = {
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
	 -1,  0,  1,  2,  3,  4,  5,  6,  7, -1,
	 -1,  8,  9, 10, 11, 12, 13, 14, 15, -1,
	 -1, 16, 17, 18, 19, 20, 21, 22, 23, -1,
	 -1, 24, 25, 26, 27, 28, 29, 30, 31, -1,
	 -1, 32, 33, 34, 35, 36, 37, 38, 39, -1,
	 -1, 40, 41, 42, 43, 44, 45, 46, 47, -1,
	 -1, 48, 49, 50, 51, 52, 53, 54, 55, -1,
	 -1, 56, 57, 58, 59, 60, 61, 62, 63, -1,
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};

int mailbox64[64] = {
	21, 22, 23, 24, 25, 26, 27, 28,
	31, 32, 33, 34, 35, 36, 37, 38,
	41, 42, 43, 44, 45, 46, 47, 48,
	51, 52, 53, 54, 55, 56, 57, 58,
	61, 62, 63, 64, 65, 66, 67, 68,
	71, 72, 73, 74, 75, 76, 77, 78,
	81, 82, 83, 84, 85, 86, 87, 88,
	91, 92, 93, 94, 95, 96, 97, 98
};

int offsets[6] = {
	0, 8, 4, 4, 8, 8
};

int offset[6][8] = {
	{ 0, 0, 0, 0, 0, 0, 0, 0 },
	{ -21, -19, -12, -8, 8, 12, 19, 21 },
	{ -11, -9, 9, 11, 0, 0, 0, 0 },
	{ -10, -1, 1, 10, 0, 0, 0, 0 },
	{ -11, -10, -9, -1, 1, 9, 10, 11 },
	{ -11, -10, -9, -1, 1, 9, 10, 11 }
};




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.