Tue 27 Aug 00:14:56 CEST 2024
This commit is contained in:
parent
40ae5ee5d3
commit
f616fbd0bb
60
test/test-sat3.js
Normal file
60
test/test-sat3.js
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
var L = sat.L
|
||||||
|
|
||||||
|
var t1=time(),t2,t3
|
||||||
|
|
||||||
|
var m = sat.solver()
|
||||||
|
|
||||||
|
var i,j,i2,j2,row
|
||||||
|
var locations=[]
|
||||||
|
for (i=0;i<9;i++) {
|
||||||
|
row=[]
|
||||||
|
for(j=0;j<9;j++) {
|
||||||
|
row.push(sat.L.variableBits([i,j], 4));
|
||||||
|
}
|
||||||
|
locations.push(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var bits = []
|
||||||
|
for(i=0;i<10;i++) bits[i]= L.constantBits(i);
|
||||||
|
|
||||||
|
|
||||||
|
for (i=0;i<9;i++) {
|
||||||
|
for (j=0;j<9;j++) {
|
||||||
|
sat.R(m,L.greaterThanOrEqual(locations[i][j], bits[1]))
|
||||||
|
sat.R(m,L.lessThanOrEqual(locations[i][j], bits[9]))
|
||||||
|
for(j2=0;j2<9;j2++) {
|
||||||
|
if (j !== j2) {
|
||||||
|
sat.F(m,L.equalBits(locations[i][j], locations[i][j2]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(i2=0;i2<9;i2++) {
|
||||||
|
for (j=0;j<9;j++) {
|
||||||
|
if (i !== i2) {
|
||||||
|
sat.F(m,L.equalBits(locations[i][j], locations[i2][j]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Presets
|
||||||
|
sat.R(m,L.equalBits(locations[0][0],bits[2]))
|
||||||
|
sat.R(m,L.equalBits(locations[1][0],bits[3]))
|
||||||
|
sat.R(m,L.equalBits(locations[0][1],bits[3]))
|
||||||
|
sat.R(m,L.equalBits(locations[8][8],bits[3]))
|
||||||
|
|
||||||
|
t2=time()
|
||||||
|
sat.solve(m)
|
||||||
|
t3=time()
|
||||||
|
for (i=0;i<9;i++) {
|
||||||
|
var row=''
|
||||||
|
for (j=0;j<9;j++) {
|
||||||
|
row = row + ' ' + sat.eval(m,locations[i][j]);
|
||||||
|
}
|
||||||
|
print(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
print()
|
||||||
|
print('Setup time: '+(t2-t1)+' ms')
|
||||||
|
print('Solver time: '+(t3-t2)+' ms')
|
Loading…
Reference in New Issue
Block a user