def queens_problem(n): board = make_board(n) return conjoin( flatten(exactly_one(row) for row in board), flatten(at_most_one(col) for col in transpose(board)), flatten(at_most_one(diag) for diag in rising_diagonals(board)), flatten(at_most_one(diag) for diag in falling_diagonals(board)))
def make_slot(): slot = [make_variable() for i in range(n*n)] problem.extend(exactly_one(slot)) return slot
def make_slot(): slot = [make_variable() for i in range(n * n)] problem.extend(exactly_one(slot)) return slot