summaryrefslogtreecommitdiff
path: root/sys/src/libsat/satmore.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2018-03-17 19:26:26 +0000
committeraiju <devnull@localhost>2018-03-17 19:26:26 +0000
commitc2c9562e3c2994d87f65ab09779190d1e7e09517 (patch)
tree6dc692d7358361da761bae454a1a858ec4c412d5 /sys/src/libsat/satmore.c
parente0be49d7f1dcb50048bead1b7d62633448482246 (diff)
add libsat
Diffstat (limited to 'sys/src/libsat/satmore.c')
-rw-r--r--sys/src/libsat/satmore.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/src/libsat/satmore.c b/sys/src/libsat/satmore.c
new file mode 100644
index 000000000..7a316f1ab
--- /dev/null
+++ b/sys/src/libsat/satmore.c
@@ -0,0 +1,24 @@
+#include <u.h>
+#include <libc.h>
+#include <sat.h>
+#include "impl.h"
+
+int
+satmore(SATSolve *s)
+{
+ int *a, i, n;
+
+ if(s == nil) return 1;
+ s->scrap = a = satrealloc(s, nil, s->nvar * sizeof(int));
+ n = 0;
+ for(i = 0; i < s->nvar; i++)
+ switch(s->lit[2*i].val){
+ case 0: a[n++] = i+1; break;
+ case 1: a[n++] = -(i+1); break;
+ }
+ if(n > 0)
+ satadd1(s, a, n);
+ free(a);
+ s->scrap = nil;
+ return satsolve(s);
+}