Thread View: alt.sources.patches
1 messages
1 total messages
Started by Norbert Jung
Fri, 31 Jul 1992 11:02
xvier-1.0, patch to xvier-1.1
Author: Norbert Jung
Date: Fri, 31 Jul 1992 11:02
Date: Fri, 31 Jul 1992 11:02
356 lines
9289 bytes
9289 bytes
Submitted-by: jung@dia.informatik.uni-stuttgart.de
Archive-name: xvier-1.0/patch01
Hello!
Here are a few changes to xvier, posted some days ago. Now there is
support for 88open certified systems, contributed by Jo Stockley, and
some speedups (mainly full alpha-beta-window search for deep cut-offs)
Have fun,
Norbert Jung
diff -cr xvier-1.0/patchlevel.h xvier-1.1/patchlevel.h
*** xvier-1.0/patchlevel.h Fri Apr 10 12:57:54 1992
--- xvier-1.1/patchlevel.h Fri Jul 31 12:41:55 1992
***************
*** 1 ****
! #define XVIER_VERSION "xvier Version 1.0"
--- 1 ----
! #define XVIER_VERSION "xvier Version 1.1"
diff -cr xvier-1.0/vier.c xvier-1.1/vier.c
*** xvier-1.0/vier.c Tue Apr 21 10:54:28 1992
--- xvier-1.1/vier.c Fri Jul 31 12:41:56 1992
***************
*** 311,334 ****
}
}
! int comp_weiss(pos, lev, limit)
! int pos, lev, limit;
{
! register int h1, h2, i, j, *p;
! int *frp, wert;
! struct oldv *sold;
if (brett[pos] & W_WINS)
return 50000 - lev;
/* Zug fuer Weiss ausfuehren */
sold = sp;
! sp -> pos = frp = freip[pos];
! sp++ -> value = *frp;
sp -> pos = brett + pos;
sp++ -> value = brett[pos];
sp -> pos = &bewertung;
sp++ -> value = bewertung;
! *frp += columns;
brett[pos] |= WEISS;
p = pp[pos];
while ((h1 = *(p++)) >= 0) {
--- 311,333 ----
}
}
! int comp_weiss(pos, lev, alpha, beta)
! int pos, lev, alpha, beta;
{
! register int h1, h2, i, j, *p;
! register struct oldv *sold;
if (brett[pos] & W_WINS)
return 50000 - lev;
/* Zug fuer Weiss ausfuehren */
sold = sp;
! sp -> pos = p = freip[pos];
! sp++ -> value = *p;
sp -> pos = brett + pos;
sp++ -> value = brett[pos];
sp -> pos = &bewertung;
sp++ -> value = bewertung;
! *p += columns;
brett[pos] |= WEISS;
p = pp[pos];
while ((h1 = *(p++)) >= 0) {
***************
*** 347,359 ****
bewertung += h2;
}
}
! h1 = -1;
for (i = 0; i < columns; i++) {
register int f = frei[i];
if (f < row_col) {
if (brett[f] & S_WINS) {
! wert = -49999 + lev;
goto end;
}
if (brett[f] & W_WINS)
--- 346,359 ----
bewertung += h2;
}
}
! h2 = h1 = -1;
for (i = 0; i < columns; i++) {
register int f = frei[i];
if (f < row_col) {
+ h2 = 0;
if (brett[f] & S_WINS) {
! beta = -49999 + lev;
goto end;
}
if (brett[f] & W_WINS)
***************
*** 360,385 ****
h1 = f;
}
}
if (h1 >= 0) {
level++;
! wert = comp_schwarz(h1, lev + 1, 100000);
level--;
} else if (lev >= level)
! wert = bewertung + s_zugzwang(40 - lev - zugstackp);
else {
register int zw;
- wert = 100000;
for (i = 0; i < columns; i++) {
j = frei[reihenfolge[i]];
if (j < row_col)
! if ((zw = comp_schwarz (j, lev + 1, wert)) < wert)
! if ((wert = zw) <= limit)
break;
/* Schwarz wird wohl den fuer ihn guenstigsten Zug auswaehlen */
}
- if (wert == 100000)
- wert = 0; /* unentschieden */
}
end:
while (sp != sold) {
--- 360,386 ----
h1 = f;
}
}
+ if (h2 < 0) {
+ beta = 0; /* unentschieden */
+ goto end;
+ }
if (h1 >= 0) {
level++;
! beta = comp_schwarz(h1, lev + 1, alpha, beta);
level--;
} else if (lev >= level)
! beta = bewertung + s_zugzwang(40 - lev - zugstackp);
else {
register int zw;
for (i = 0; i < columns; i++) {
j = frei[reihenfolge[i]];
if (j < row_col)
! if ((zw = comp_schwarz (j, lev + 1, alpha, beta)) < beta)
! if ((beta = zw) <= alpha)
break;
/* Schwarz wird wohl den fuer ihn guenstigsten Zug auswaehlen */
}
}
end:
while (sp != sold) {
***************
*** 386,412 ****
sp--;
*(sp -> pos) = sp -> value;
}
! return (wert);
}
! int comp_schwarz(pos, lev, limit)
! int pos, lev, limit;
{
! register int h1, h2, i, j, *p;
! int *frp, wert;
! struct oldv *sold;
if (brett[pos] & S_WINS)
return -50000 + lev;
/* Zug fuer Schwarz ausfuehren */
sold = sp;
! sp -> pos = frp = freip[pos];
! sp++ -> value = *frp;
sp -> pos = brett + pos;
sp++ -> value = brett[pos];
sp -> pos = &bewertung;
sp++ -> value = bewertung;
! *frp += columns;
brett[pos] |= SCHWARZ;
p = pp[pos];
while ((h1 = *(p++)) >= 0) {
--- 387,412 ----
sp--;
*(sp -> pos) = sp -> value;
}
! return beta;
}
! int comp_schwarz(pos, lev, alpha, beta)
! int pos, lev, alpha, beta;
{
! register int h1, h2, i, j, *p;
! register struct oldv *sold;
if (brett[pos] & S_WINS)
return -50000 + lev;
/* Zug fuer Schwarz ausfuehren */
sold = sp;
! sp -> pos = p = freip[pos];
! sp++ -> value = *p;
sp -> pos = brett + pos;
sp++ -> value = brett[pos];
sp -> pos = &bewertung;
sp++ -> value = bewertung;
! *p += columns;
brett[pos] |= SCHWARZ;
p = pp[pos];
while ((h1 = *(p++)) >= 0) {
***************
*** 425,437 ****
bewertung -= h2;
}
}
! h1 = -1;
for (i = 0; i < columns; i++) {
register int f = frei[i];
if (f < row_col) {
if (brett[f] & W_WINS) {
! wert = 49999 - lev;
goto end;
}
if (brett[f] & S_WINS)
--- 425,438 ----
bewertung -= h2;
}
}
! h2 = h1 = -1;
for (i = 0; i < columns; i++) {
register int f = frei[i];
if (f < row_col) {
+ h2 = 0;
if (brett[f] & W_WINS) {
! alpha = 49999 - lev;
goto end;
}
if (brett[f] & S_WINS)
***************
*** 438,462 ****
h1 = f;
}
}
if (h1 >= 0) {
level++;
! wert = comp_weiss(h1, lev + 1, -100000);
level--;
} else if (lev >= level)
! wert = bewertung + w_zugzwang(40 - lev - zugstackp);
else {
register int zw;
- wert = -100000;
for (i = 0; i < columns; i++) {
j = frei[reihenfolge[i]];
if (j < row_col)
! if ((zw = comp_weiss (j, lev + 1, wert)) > wert)
! if ((wert = zw) >= limit)
break;
}
- if (wert == -100000)
- wert = 0; /* unentschieden */
}
end:
while (sp != sold) {
--- 439,464 ----
h1 = f;
}
}
+ if (h2 < 0) {
+ alpha = 0; /* unentschieden */
+ goto end;
+ }
if (h1 >= 0) {
level++;
! alpha = comp_weiss(h1, lev + 1, alpha, beta);
level--;
} else if (lev >= level)
! alpha = bewertung + w_zugzwang(40 - lev - zugstackp);
else {
register int zw;
for (i = 0; i < columns; i++) {
j = frei[reihenfolge[i]];
if (j < row_col)
! if ((zw = comp_weiss (j, lev + 1, alpha, beta)) > alpha)
! if ((alpha = zw) >= beta)
break;
}
}
end:
while (sp != sold) {
***************
*** 463,469 ****
sp--;
*(sp -> pos) = sp -> value;
}
! return (wert);
}
int main(argc, argv)
--- 465,471 ----
sp--;
*(sp -> pos) = sp -> value;
}
! return alpha;
}
int main(argc, argv)
***************
*** 565,571 ****
register int zw;
if ((j = frei[reihenfolge[i]]) < row_col)
! if ((zw = comp_schwarz (j, 0, wert + 1)) < wert) {
wert = zw;
same_n = 1;
same[0] = reihenfolge[i];
--- 567,573 ----
register int zw;
if ((j = frei[reihenfolge[i]]) < row_col)
! if ((zw = comp_schwarz (j, 0, -100000, wert + 1)) < wert) {
wert = zw;
same_n = 1;
same[0] = reihenfolge[i];
diff -cr xvier-1.0/xvier.h xvier-1.1/xvier.h
*** xvier-1.0/xvier.h Thu Apr 9 17:12:51 1992
--- xvier-1.1/xvier.h Fri Jul 31 12:41:56 1992
***************
*** 8,10 ****
--- 8,16 ----
#if defined(_IBMR2)
#define NO_FD_SET
#endif
+
+ /* changes from Jo Stockley (jo@88open.org) for 88open certified systems */
+ #if defined(m88k)
+ #define NO_GETDTABSIZE
+ #include <unistd.h>
+ #endif
--
+----------------------------------------------------------------------------+
|Norbert Jung BITNET: jung%dia%ifistg@unido.bitnet |
|Student local: jung@dia |
|Universitaet Stuttgart SMTP: jung@dia.informatik.uni-stuttgart.de |
|BR Deutschland X400: jung@dia.informatik.uni-stuttgart.dbp.de |
+----------------------------------------------------------------------------+
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads