Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Open Source Chess Programs

Author: Dann Corbit

Date: 10:14:32 06/08/05

Go up one level in this thread


On June 08, 2005 at 02:04:38, Uri Blass wrote:

>On June 08, 2005 at 01:31:12, Dann Corbit wrote:
>
>>On June 08, 2005 at 00:54:26, Uri Blass wrote:
>>
>>>On June 07, 2005 at 23:01:16, Dann Corbit wrote:
>>>
>>>>On June 07, 2005 at 21:32:33, Pedro Castro wrote:
>>>>
>>>>>Tord, how I can count the line number (code) of the program?,  some interface
>>>>
>>>>/* wc: count lines, words, chars */
>>>>
>>>>#include <stdio.h>
>>>>
>>>>int main(int argc, char *argv[])
>>>>{
>>>>    int             c,
>>>>                    i,
>>>>                    inword;
>>>>    FILE           *fp;
>>>>    long            linect,
>>>>                    wordct,
>>>>                    charct;
>>>>    long            tlinect = 0,
>>>>                    twordct = 0,
>>>>                    tcharct = 0;
>>>>
>>>>    i = 1;
>>>>    fp = stdin;
>>>>    printf(" lines   words   chars   file\n");
>>>>    printf("======= ======= =======  =====\n");
>>>>    do {
>>>>        if (argc > 1 && (fp = fopen(argv[i], "r")) == NULL) {
>>>>            fprintf(stderr, "                        wc: can't open %s\n",
>>>>argv[i]);
>>>>            continue;
>>>>        }
>>>>        linect = wordct = charct = inword = 0;
>>>>        while ((c = getc(fp)) != EOF) {
>>>>            charct++;
>>>>            if (c == '\n')
>>>>                linect++;
>>>>            if (c == ' ' || c == '\t' || c == '\n')
>>>>                inword = 0;
>>>>            else if (inword == 0) {
>>>>                inword = 1;
>>>>                wordct++;
>>>>            }
>>>>        }
>>>>        printf("%7ld %7ld %7ld  ", linect, wordct, charct);
>>>>        printf(argc > 1 ? "%s\n" : "\n", argv[i]);
>>>>        fclose(fp);
>>>>        tlinect += linect;
>>>>        twordct += wordct;
>>>>        tcharct += charct;
>>>>    } while (++i < argc);
>>>>    if (argc > 2)
>>>>        printf("%7ld %7ld %7ld  total\n", tlinect, twordct, tcharct);
>>>>    return 0;
>>>>}
>>>>
>>>>>I always have remained astonished at the code of Olithink, very compact, some
>>>>>times I wonder myself where is the evaluation?
>>>>
>>>>It just counts the wood.
>>>>
>>>>/* The complex evaluation function: */
>>>>int eval(int on_move) {
>>>>	return on_move ? matValue : -matValue;
>>>>}
>>>
>>>No
>>>
>>>It is clearly more complex and it also evaluate pawn structure and mobility
>>>
>>>Here is the relevant code:
>>>
>>>int eval(int on_move, int alpha, int beta) {
>>>	int i, j, c, p, poseval;
>>>	u64 hbit;
>>>	int teval = on_move ? -material : material;
>>>	if (teval - 150 >= beta) return beta;
>>>	if (teval + 150 <= alpha) return alpha;
>>>	neval ++;
>>>
>>>	if (plookUpH(&poseval) != 1) {
>>>		poseval = pawneval(R000BitB[PAW_W], R000BitB[PAW_B], COL_W);
>>>		poseval += pawneval(R000BitB[PAW_B], R000BitB[PAW_W], COL_B);
>>>		pstoreH(poseval);
>>>	}
>>>	poseval += material;
>>>
>>>	hbit = P000 & ~(R000BitB[PAW_W] | R000BitB[PAW_B]);
>>>	while (hbit) {
>>>		i = LSB(hbit);
>>>		hbit ^= _r000m[i];
>>>		j = board[i];
>>>		p = j | 1;
>>>		c = j & 1;
>>>			if (p == KNI_B) { poseval += knightmobil[i] * pos_val[j]; continue; }
>>>			if (p == BIS_B) { poseval += bitcount(A045(i) | A135(i)) * pos_val[j];
>>>continue; }
>>>			if (p == ROO_B) { poseval += bitcount(A000(i) | A090(i)) * pos_val[j];
>>>continue; }
>>>			if (p == KIN_B) { poseval -= kingmobil[i] * pos_val[j ^
>>>(!R000BitB[QUEEN[c^1]])]; }
>>>	}
>>>
>>>	if (!R000BitB[PAW_W] && poseval > 0) {
>>>		if (!(QuRo & R000BitB[COL_W]) && bitcount(R000BitB[COL_W]) < 3) return 0;
>>>	} else if (!R000BitB[PAW_B] && poseval < 0) {
>>>		if (!(QuRo & R000BitB[COL_B]) && bitcount(R000BitB[COL_B]) < 3) return 0;
>>>	}
>>>
>>>	return on_move ? - poseval : poseval;
>>>}
>>>
>>>Uri
>>
>>That is the eval from Olithink5Prealpha.c on my machine.
>
>I do not see olithink5Prealpha.c to download.

Too bad, it is the most clear and only 497 lines total.  But if he removed it, I
guess he does not want it public.  He might have sent me a special copy too, I
don't remember.




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.