🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#4
Author: Norbert Jung
Date: Fri, 31 Jul 1992 11:02
356 lines
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