public JolkaCSP(Jolka jolka, IVariableSelectionHeuristics <string, JolkaVariable> variableSelectionheuristics) { _jolka = jolka; _variableSelectionHeuristics = variableSelectionheuristics; EMPTY_CHAR = jolka.Empty; var variables = ParseVariables(jolka).ToArray(); var domains = CreateDmains(jolka, variables); var constraints = CreateConstraints(jolka, variables); _variableSelectionHeuristics.RegisterVariables(variables, domains); VariablesWithConstraints = new Tuple <JolkaVariable, Domain <string>, List <Constraint <string, JolkaVariable> > > [variables.Length]; for (int i = 0; i < variables.Length; i++) { VariablesWithConstraints[i] = new Tuple <JolkaVariable, Domain <string>, List <Constraint <string, JolkaVariable> > >(variables[i], domains[i], constraints[i]); } }
public SudokuCSP(Sudoku sudoku, IVariableSelectionHeuristics <char, Variable <char> > variableSelectionHeuristics) { this._variableSelectionHeuristics = variableSelectionHeuristics; _rows = sudoku.Board.Rows; _columns = sudoku.Board.Columns; _sudoku = sudoku.DeepCopy(); EMPTY = sudoku.Empty; var vars = ParseVariables(_sudoku); var doms = CreateDomains(vars); var cons = CreateConstraints(_rows, _columns); //_indexMap = Enumerable.Range(0, vars.Length).ToArray(); variableSelectionHeuristics.RegisterVariables(vars, doms); VariablesWithConstraints = new Tuple <Variable <char>, Domain <char>, List <Constraint <char, Variable <char> > > > [vars.Length]; for (int i = 0; i < vars.Length; i++) { VariablesWithConstraints[i] = new Tuple <Variable <char>, Domain <char>, List <Constraint <char, Variable <char> > > >(vars[i], doms[i], cons[i]); } }