The case for the UCI "go" parser similarities is made here:
http://pagesperso-orange.fr/ct_chess/Fr ... rt_go.html
However, it seems that the results on that page are NOT directly copied from the actual sources -- several modifications were made to make the code look more similar than it is. I'll explain below.
The actual source for Fruit 2.1 is easily available on the net (the file with the start_go parser is "protocol.cpp") while the reconstructed source for Rybka is taken from a post in this forum by Rick Faben:
http://64.68.157.89/forum/viewtopic.php ... t&start=10
(If the above link does not work, check the earlier thread "Here is something to start with" where you can find a link that works.)
Now comes the shady part. The order in which variables are declared and the order in which variables are initialized, plus the order in which the "if" claims are checked are actually different in several places, in both programs, from the sources presented in the "orange.fr" page. The "orange.fr" page presents the source modified so that there is maximum similarity in the orders of the variables and "if" statements.
Let me give some examples (I have not checked for all modifications)
Rick Faben's Ribka source:
bool ponder, infinite;
int movestogo, movetime, btime, wtime, binc, winc;
orange.fr Rybka code:
Fruit 2.1 original source:bool infinite, ponder;
int binc, btime, movetime, winc, wtime;
int movestogo;
The orange.fr page writes almost correctly the Fruit 2.1 source -- except for changing the order of the int declarations line and double declarations line, and ignoring the "sint64 nodes" line-- but it changes the order of declarations completely in the Rybka code.bool infinite, ponder;
int depth, mate, movestogo;
sint64 nodes;
double binc, btime, movetime, winc, wtime;
It is clear that the code was changed from Rick Faben's source to make it more similar to the Fruit declarations.
When we go to the variable initialization part, the following code is the same in both Rick Faben's Rybka code and in the orange.fr Rybka code -- but as we'll see, the Fruit code is change to match the Rybka code.
Rick Faben's Rybka code:
infinite = 0;
ponder = 0;
movestogo = 25;
winc = 0;
wtime = 0;
binc = 0;
btime = 0;
movetime = 0;
Actual Fruit 2.1 code:
Modified Fruit 2.1 code in the orange.fr page:infinite = false;
ponder = false;
depth = -1;
mate = -1;
movestogo = -1;
nodes = -1;
binc = -1.0;
btime = -1.0;
movetime = -1.0;
winc = -1.0;
wtime = -1.0;
Again the Fruit code has been change to match the Rick Faben Rybka code.
depth = -1;
mate = -1;
nodes = -1;
infinite = false;
ponder = false;
movestogo = -1;
winc = -1.0;
wtime = -1.0;
binc = -1.0;
btime = -1.0;
movetime = -1.0;
There are similar modifications in the "if" statements order -- it takes to much typing to write that here too, but you can check it for yourselves.
Clearly the orange.fr page has modified the source codes in order to make lines more similar than they actually are. Why this is so, and who did it remains a matter for speculation.