Module Name:    src
Committed By:   rillig
Date:           Sun May 15 22:41:51 UTC 2022

Modified Files:
        src/games/gomoku: gomoku.h pickmove.c

Log Message:
gomoku: remove write-only members from overlap_info

Since overlap_info is only used in pickmove.c, move it there.

No functional change.  In particular, in the middle of a game, gomoku
still tends to fall into analysis paralysis, thinking about the best
move for more than 3 minutes on modern hardware.  Since the algorithm is
basically unchanged since the 1990s, it must have been a long waiting
time back then, probably an hour per move.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/games/gomoku/gomoku.h
cvs rdiff -u -r1.26 -r1.27 src/games/gomoku/pickmove.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/games/gomoku/gomoku.h
diff -u src/games/gomoku/gomoku.h:1.23 src/games/gomoku/gomoku.h:1.24
--- src/games/gomoku/gomoku.h:1.23	Sun May 15 22:18:36 2022
+++ src/games/gomoku/gomoku.h	Sun May 15 22:41:51 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: gomoku.h,v 1.23 2022/05/15 22:18:36 rillig Exp $	*/
+/*	$NetBSD: gomoku.h,v 1.24 2022/05/15 22:41:51 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994
@@ -174,7 +174,6 @@ struct combostr {
 #define C_OPEN_0	0x01		/* link[0] is an open ended frame */
 #define C_OPEN_1	0x02		/* link[1] is an open ended frame */
 #define C_LOOP		0x04		/* link[1] intersects previous frame */
-#define C_MARK		0x08		/* indicates combo processed */
 
 /*
  * This structure is used for recording the completion points of
@@ -221,17 +220,6 @@ struct	spotstr {
 #define BFLAG		0x010000	/* frame intersects border or dead */
 #define BFLAGALL	0x0F0000	/* all frames dead */
 
-/*
- * This structure is used to store overlap information between frames.
- */
-struct overlap_info {
-	int		o_intersect;	/* intersection spot */
-	struct combostr	*o_fcombo;	/* the connecting combo */
-	u_char		o_link;		/* which link to update (0 or 1) */
-	u_char		o_off;		/* offset in frame of intersection */
-	u_char		o_frameindex;	/* intersection frame index */
-};
-
 extern	const char	*letters;
 extern	const char	pdir[];
 

Index: src/games/gomoku/pickmove.c
diff -u src/games/gomoku/pickmove.c:1.26 src/games/gomoku/pickmove.c:1.27
--- src/games/gomoku/pickmove.c:1.26	Sun May 15 22:18:36 2022
+++ src/games/gomoku/pickmove.c	Sun May 15 22:41:51 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: pickmove.c,v 1.26 2022/05/15 22:18:36 rillig Exp $	*/
+/*	$NetBSD: pickmove.c,v 1.27 2022/05/15 22:41:51 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)pickmove.c	8.2 (Berkeley) 5/3/95";
 #else
-__RCSID("$NetBSD: pickmove.c,v 1.26 2022/05/15 22:18:36 rillig Exp $");
+__RCSID("$NetBSD: pickmove.c,v 1.27 2022/05/15 22:41:51 rillig Exp $");
 #endif
 #endif /* not lint */
 
@@ -55,6 +55,15 @@ __RCSID("$NetBSD: pickmove.c,v 1.26 2022
 #define BIT_CLR(a, b)	((a)[(b)/BITS_PER_INT] &= ~(1 << ((b) % BITS_PER_INT)))
 #define BIT_TEST(a, b)	((a)[(b)/BITS_PER_INT] & (1 << ((b) % BITS_PER_INT)))
 
+/*
+ * This structure is used to store overlap information between frames.
+ */
+struct overlap_info {
+	int		o_intersect;	/* intersection spot */
+	u_char		o_off;		/* offset in frame of intersection */
+	u_char		o_frameindex;	/* intersection frame index */
+};
+
 static struct combostr *hashcombos[FAREA];/* hash list for finding duplicates */
 static struct combostr *sortcombos;	/* combos at higher levels */
 static int combolen;			/* number of combos in sortcombos */
@@ -1148,8 +1157,6 @@ checkframes(struct combostr *cbp, struct
 					return -1;	/* invalid overlap */
 
 				vertices->o_intersect = n;
-				vertices->o_fcombo = cbp;
-				vertices->o_link = 1;
 				vertices->o_off = (n - tcbp->c_vertex) /
 					dd[tcbp->c_dir];
 				vertices->o_frameindex = myindex;
@@ -1198,8 +1205,6 @@ checkframes(struct combostr *cbp, struct
 				return -1;	/* invalid overlap */
 
 			vertices->o_intersect = n;
-			vertices->o_fcombo = lcbp;
-			vertices->o_link = 0;
 			vertices->o_off = (n - cbp->c_vertex) /
 				dd[cbp->c_dir];
 			vertices->o_frameindex = 0;

Reply via email to