aboutsummaryrefslogtreecommitdiff
path: root/puzzles.h
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2006-10-28 15:38:53 +0000
committerSimon Tatham <anakin@pobox.com>2006-10-28 15:38:53 +0000
commitb9547673c6462bf73e642328300479df6df71d7b (patch)
treeccb654a74a3045b96244c3124aca2abab8d3f11a /puzzles.h
parent04e3e09b8743acd1fffc7b756d876f47cbb35a88 (diff)
downloadpuzzles-b9547673c6462bf73e642328300479df6df71d7b.zip
puzzles-b9547673c6462bf73e642328300479df6df71d7b.tar.gz
puzzles-b9547673c6462bf73e642328300479df6df71d7b.tar.bz2
puzzles-b9547673c6462bf73e642328300479df6df71d7b.tar.xz
Mike Pinna has done some major reworking of the Loopy solver, giving
rise to a new Hard difficulty level. [originally from svn r6880]
Diffstat (limited to 'puzzles.h')
-rw-r--r--puzzles.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/puzzles.h b/puzzles.h
index 4b977a5..f67da1c 100644
--- a/puzzles.h
+++ b/puzzles.h
@@ -278,7 +278,22 @@ void draw_rect_outline(drawing *dr, int x, int y, int w, int h,
/*
* dsf.c
*/
+int *snew_dsf(int size);
+
+void print_dsf(int *dsf, int size);
+
+/* Return the canonical element of the equivalence class containing element
+ * val. If 'inverse' is non-NULL, this function will put into it a flag
+ * indicating whether the canonical element is inverse to val. */
+int edsf_canonify(int *dsf, int val, int *inverse);
int dsf_canonify(int *dsf, int val);
+
+/* Allow the caller to specify that two elements should be in the same
+ * equivalence class. If 'inverse' is TRUE, the elements are actually opposite
+ * to one another in some sense. This function will fail an assertion if the
+ * caller gives it self-contradictory data, ie if two elements are claimed to
+ * be both opposite and non-opposite. */
+void edsf_merge(int *dsf, int v1, int v2, int inverse);
void dsf_merge(int *dsf, int v1, int v2);
void dsf_init(int *dsf, int len);