Geschrieben von: / Posted by: Matthias Gemuh at 15 February 2004 21:46:13:
Als Antwort auf: / In reply to: WBEC Ridderkerk new results. geschrieben von: / posted by: Leo Dijksman at 15 February 2004 17:05:51:
For the record, here is what has happened so far.
Someone asked me the question "Is DanChess a crafty clone?" I responded that I
had no idea, so they sent me an executable. I looked through the binary and I
found the following similarities:
1. Many identical arrays. IE things like the compact-attacks stuff to shift
diagonals for bishops, the various king-safety arrays that I use to scale the
various "defects" I find, and so forth. That was an immediate red flag. Ditto
for specific bit patterns such as the thing I use to detect the stonewall
attack, bitmaps for won king and pawn endings, and so forth. No doubt someone
could come up with the same ideas, or even read the crafty comments, but to do
things the _exact_ same way (ie even numbering the bits in a bad order for X86,
because Crafty was originally developed for the Cray which has an instruction
that effectively counts bits from MSB=0 to LSB=63, no bits set=64.
2. Dann then sent me the source. I looked at several pieces, and found that
there were too many similar pieces of code. IE Swap() was just one example.
The major differences between swap.cpp (DanChess) and swap.c (crafty) was that
(a) swap.c was rewritten to C++, and (b) the tree structure was removed and made
global since apparently he had no interest in copying the SMP stuff. If you
look at the two functions, they are identical. Dann and I didn't agree on this
as he believes that if you simply change variable names, that makes code
different. As an academician, I don't buy that. I looked at other pieces of
code, from pawn hashing, to pawn structure (ie he even does the
kingside/queenside defects stuff and stuffs it in the pawn hash) and so forth,
and the code is just like mine. Many parts of the eval show the same kind of
"translation" effects (c to c++) and some variable name changes, but that is
all.
3. In looking at it, the bitboard stuff is the same. The attack stuff (swap.c)
is the same. Much of the eval is identical. I looked at my evaluate.h and his
board_evaluate.cpp and there is _way_ too much identical code. I quit at that
point as there was little need to see if _more_ was identical, I was already
beyond what was reasonable.
Is it a clone?
You have to define clone for yourself. I think too much was taken directly from
the crafty source to call this an original program.
That is my opinion.
Yours may be different...
Feel free to post this on the winboard forum...
BigLion + Taktix