Skip to content

Commit 0c7e5af

Browse files
committed
Revert "added doctest in Sudoku for AC4 and and the possibility of choosing the constant propagation algorithm in mac inference"
This reverts commit 6986247.
1 parent 2af1659 commit 0c7e5af

File tree

2 files changed

+11
-41
lines changed

2 files changed

+11
-41
lines changed

csp.py

+7-37
Original file line numberDiff line numberDiff line change
@@ -290,9 +290,9 @@ def forward_checking(csp, var, value, assignment, removals):
290290
return True
291291

292292

293-
def mac(csp, var, value, assignment, removals, constraint_propagation=AC3):
293+
def mac(csp, var, value, assignment, removals):
294294
"""Maintain arc consistency."""
295-
return constraint_propagation(csp, {(X, var) for X in csp.neighbors[var]}, removals)
295+
return AC3(csp, {(X, var) for X in csp.neighbors[var]}, removals)
296296

297297

298298
# The search, proper
@@ -326,11 +326,11 @@ def backtrack(assignment):
326326

327327

328328
# ______________________________________________________________________________
329-
# Min-conflicts Hill Climbing search for CSPs
329+
# Min-conflicts hillclimbing search for CSPs
330330

331331

332332
def min_conflicts(csp, max_steps=100000):
333-
"""Solve a CSP by stochastic Hill Climbing on the number of conflicts."""
333+
"""Solve a CSP by stochastic hillclimbing on the number of conflicts."""
334334
# Generate a complete assignment for all variables (probably with conflicts)
335335
csp.current = current = {}
336336
for var in csp.variables:
@@ -532,7 +532,7 @@ def queen_constraint(A, a, B, b):
532532
return A == B or (a != b and A + a != B + b and A - a != B - b)
533533

534534

535-
class NQueens(CSP):
535+
class NQueensCSP(CSP):
536536
"""Make a CSP for the nQueens problem for search with min_conflicts.
537537
Suitable for large n, it uses only data structures of size O(n).
538538
Think of placing queens one per column, from left to right.
@@ -548,7 +548,7 @@ class NQueens(CSP):
548548
a variable, and a best value for the variable, are each O(n).
549549
If you want, you can keep track of conflicted variables, then variable
550550
selection will also be O(1).
551-
>>> len(backtracking_search(NQueens(8)))
551+
>>> len(backtracking_search(NQueensCSP(8)))
552552
8
553553
"""
554554

@@ -673,37 +673,7 @@ class Sudoku(CSP):
673673
>>> h = Sudoku(harder1)
674674
>>> backtracking_search(h, select_unassigned_variable=mrv, inference=forward_checking) is not None
675675
True
676-
677-
>>> e = Sudoku(easy1)
678-
>>> e.display(e.infer_assignment())
679-
. . 3 | . 2 . | 6 . .
680-
9 . . | 3 . 5 | . . 1
681-
. . 1 | 8 . 6 | 4 . .
682-
------+-------+------
683-
. . 8 | 1 . 2 | 9 . .
684-
7 . . | . . . | . . 8
685-
. . 6 | 7 . 8 | 2 . .
686-
------+-------+------
687-
. . 2 | 6 . 9 | 5 . .
688-
8 . . | 2 . 3 | . . 9
689-
. . 5 | . 1 . | 3 . .
690-
>>> AC4(e); e.display(e.infer_assignment())
691-
True
692-
4 8 3 | 9 2 1 | 6 5 7
693-
9 6 7 | 3 4 5 | 8 2 1
694-
2 5 1 | 8 7 6 | 4 9 3
695-
------+-------+------
696-
5 4 8 | 1 3 2 | 9 7 6
697-
7 2 9 | 5 6 4 | 1 3 8
698-
1 3 6 | 7 9 8 | 2 4 5
699-
------+-------+------
700-
3 7 2 | 6 8 9 | 5 1 4
701-
8 1 4 | 2 5 3 | 7 6 9
702-
6 9 5 | 4 1 7 | 3 8 2
703-
>>> h = Sudoku(harder1)
704-
>>> backtracking_search(h, select_unassigned_variable=mrv, inference=forward_checking) is not None
705-
True
706-
"""
676+
""" # noqa
707677

708678
R3 = _R3
709679
Cell = _CELL

tests/test_csp.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,12 @@ def test_min_conflicts():
376376

377377
australia_impossible = MapColoringCSP(list('RG'), 'SA: WA NT Q NSW V; NT: WA Q; NSW: Q V; T: ')
378378
assert min_conflicts(australia_impossible, 1000) is None
379-
assert min_conflicts(NQueens(2), 1000) is None
380-
assert min_conflicts(NQueens(3), 1000) is None
379+
assert min_conflicts(NQueensCSP(2), 1000) is None
380+
assert min_conflicts(NQueensCSP(3), 1000) is None
381381

382382

383383
def test_nqueens_csp():
384-
csp = NQueens(8)
384+
csp = NQueensCSP(8)
385385

386386
assignment = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
387387
csp.assign(5, 5, assignment)
@@ -428,7 +428,7 @@ def test_nqueens_csp():
428428
assert 6 not in assignment
429429

430430
for n in range(5, 9):
431-
csp = NQueens(n)
431+
csp = NQueensCSP(n)
432432
solution = min_conflicts(csp)
433433
assert not solution or sorted(solution.values()) == list(range(n))
434434

0 commit comments

Comments
 (0)