Skip to content

Commit b0072d1

Browse files
committed
nqueens (handcrafted B for now)
1 parent dbdb17f commit b0072d1

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

pycona/benchmarks/nqueens.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,29 @@ def construct_nqueens_problem(n):
1616

1717
# Constraints list
1818
CT = []
19+
diag = []
1920

2021
CT += list(cp.AllDifferent(queens).decompose())
2122

2223
for i in range(n):
2324
for j in range(i + 1, n): # Compare each queen with every other queen once
24-
CT += [(queens[i] - i != queens[j] - j)] # Different major diagonals
25-
CT += [(queens[i] + i != queens[j] + j)] # Different minor diagonals
26-
25+
diag += [(queens[i] - i != queens[j] - j)] # Different major diagonals
26+
diag += [(queens[i] + i != queens[j] + j)] # Different minor diagonals
2727

2828
# Add all collected constraints to the model
29-
model += CT
29+
model += CT + diag
3030

31-
C_T = toplevel_list(CT)
31+
C_T = toplevel_list(CT + diag)
3232

3333
AV = absvar(2)
34-
#lang = [AV[0] == AV[1], AV[0] != AV[1], AV[0] < AV[1], AV[0] > AV[1], AV[0] >= AV[1], AV[0] <= AV[1]] +
35-
lang = [AV[0] - AV[1] == constant for constant in range(-n, 2*n)] + [AV[0] - AV[1] != constant for constant in range(-n, 2*n)]
34+
lang = [AV[0] == AV[1], AV[0] != AV[1], AV[0] < AV[1], AV[0] > AV[1], AV[0] >= AV[1], AV[0] <= AV[1]]
35+
#lang = [AV[0] - AV[1] == constant for constant in range(-n, 2*n)] + [AV[0] - AV[1] != constant for constant in range(-n, 2*n)]
3636

3737
instance = ProblemInstance(variables=queens, params=parameters, language=lang, name="nqueens")
3838

39+
instance.construct_bias()
40+
instance.bias = instance.bias + diag
41+
3942
oracle = ConstraintOracle(list(set(toplevel_list(C_T))))
4043

4144
print("oracle constraints: ", len(oracle.constraints))

0 commit comments

Comments
 (0)