private void importSolvesFullBruteforce(int tableSize, Bruteforce solver) { solves = solver.solves; this.tableSize = tableSize; this.countOfSolves = solves.Length; stateToView.Content = string.Format("{0}/{1}", 1, solves.Length); }
private void showSolveBrutforce(IAsyncResult resObj) { Dispatcher.Invoke(() => { grid.Children.Clear(); grid.Background = new SolidColorBrush(Colors.DarkGray); currentSolve = 0; Bruteforce solver = ((Tuple <Bruteforce, int>)resObj.AsyncState).Item1; int tableSize = ((Tuple <Bruteforce, int>)resObj.AsyncState).Item2; this.tableSize = tableSize; importSolvesFullBruteforce(tableSize, solver); Grid newTable = newTable = createTable(tableSize); newTable.SetValue(Grid.RowProperty, 1); newTable.SetValue(Grid.ColumnProperty, 1); if (solves.Length > 0) { for (int i = 0; i < tableSize; i++) { for (int j = 0; j < tableSize; j++) { if (solves[currentSolve][i * tableSize + j] == '1') { setCell(newTable, i, j); } } } } else { MessageBox.Show("Решений не найдено"); } grid.Children.Add(newTable); deleteLoandingAnimation(); }); }
private void Button_Click_Go(object sender, RoutedEventArgs e) { if (proc != null) { if (!proc.HasExited) { proc.Kill(); } } showLoandingAnimation(); int tableSize; if (int.TryParse(viewTableSize.Text, out tableSize)) { if (tableSize == 2 && currentTactic < 3) { solves = new string[4]; solves[0] = "0001"; solves[1] = "0010"; solves[2] = "0100"; solves[3] = "1000"; this.tableSize = tableSize; this.countOfSolves = solves.Length; showSolveBrutforce(0, 2); Dispatcher.Invoke(() => { deleteLoandingAnimation(); stateToView.Content = string.Format("{0}/{1}", 1, solves.Length); }); return; } if (tableSize == 3 && currentTactic < 3) { solves = new string[8]; solves[0] = "100000010"; solves[1] = "100001000"; solves[2] = "010000100"; solves[3] = "010000001"; solves[4] = "001100000"; solves[5] = "001000010"; solves[6] = "000100001"; solves[7] = "000001100"; this.tableSize = tableSize; this.countOfSolves = solves.Length; showSolveBrutforce(0, 3); Dispatcher.Invoke(() => { deleteLoandingAnimation(); stateToView.Content = string.Format("{0}/{1}", 1, solves.Length); }); return; } if (currentTactic == 0) { int firstSolve = 0; BDDSolver solver = new BDDSolver(); proc = solver.proccess(tableSize); WaitToEndOfProccess waitToEndOfProccess = checkProccessIsEndCUDD; waitToEndOfProccess.BeginInvoke(tableSize, new AsyncCallback(showSolveCUDD), new Tuple <int, int>(firstSolve, tableSize)); } if (currentTactic == 1) { Bruteforce solver = new Bruteforce(); WaitToEndOfProccess waitToEndOfProccess = solver.initSolvesFullBrutforce; waitToEndOfProccess.BeginInvoke(tableSize, new AsyncCallback(showSolveBrutforce), new Tuple <Bruteforce, int>(solver, tableSize)); } if (currentTactic == 2) { Bruteforce solver = new Bruteforce(); WaitToEndOfProccess waitToEndOfProccess = solver.initSolvesOptimizeBrutforce; waitToEndOfProccess.BeginInvoke(tableSize, new AsyncCallback(showSolveBrutforce), new Tuple <Bruteforce, int>(solver, tableSize)); } } else { MessageBox.Show("Введен неверный размер доски"); } }