Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 19 April 2004 10:11:13:
There is no conflict between using TBs and developing endgame code,Possibly, but I would be reluctant to do so. You might be right that bitbasesShould Eugene ever find the time to convert them to bitbases they
might contribute a bit more to strength. In that case you could be "forced" to
use them, just to even the playing field?
It's a nobrainer for me, I would always take the Elo!
C'mon, C is just lame when you can do C plus plus so much more!
Hehe, my perft.o is 69 kb, game.o is 105 kb and xboard.o is 110 kb.
would contribute more to playing strength than tablebases, but I still think
it is unwise to use them before your engine is able to play near-perfectly
in basic endgames on its own. Writing accurate evaluation functions for
basic endgames is tricky and time-consuming, but I think it is worth the
effort because it could help you learn principles which are useful even in
more complicated endgames.
So would I, if my engine were a few hundred Elo points stronger. But down
at Gothmog's level, a 10 Elo increase simply isn't that much, and can be
easily achieved without bloating the binary.
Yeah, C is definitely lame. But what can a poor man with an allergy against
C++ do if he wants his engine to be easily portable over a wide range of
platforms?
I really don't understand how your perft.o could be that big. Does it contain
only the perft() function, or lots of other code as well? I don't have perft
in Gothmog, but in Glaurung (my new engine), perft.o is 1084 bytes. The
code looks like this:
#include "glaurung.h"
int perft(int depth) {
move_t m;
int result = 0;
if(depth==0) return 1;
for(m=pick_move(); m; m=pick_move()) {
make_move(m);
if(!in_check(XSide)) result += perft(depth-1);
unmake_move(m);
}
return result;
}
I actually use the TBs to verify some of my recognizers.
You also need good knowledge all the way to the leaves and probing TBs out
there is too expensive.
Well perhaps you are lucky.
I do not easily find 10 Elo, it's more than a months work.
What platform is C++ not portable to?
Aside perhaps from cell phones and pocket pcs.
I have many versions, some use a hash and some are full of tables for
fast debugging.
Here is the one equivalent to yours:
void Board::PerftDeep(uint d) {
int nm = GenLegalMoves(ply);
Save();
if (d == 1) NodeCount[ply+1] += nm;
else {
Move *pml = t->pml[ply];
int i = -1;
while (++iTord