from constraintsearch import * def queen_constraint(r1,c1,r2,c2): l1 = int(r1[1:]) l2 = int(r2[1:]) if c1==c2: return False if abs(l1-l2)==abs(c1-c2): return False return True def make_constraint_graph(n): queens = [ 'R'+str(i+1) for i in range(n) ] return { (X,Y):queen_constraint for X in queens for Y in queens if X!=Y } def make_domains(n): queens = [ 'R'+str(i+1) for i in range(n) ] cols = [ i+1 for i in range(n) ] return { r:cols for r in queens } cs = ConstraintSearch(make_domains(4),make_constraint_graph(4)) print(cs.search())