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;