private string CreateInfoString(bool forProcessing = false) { StackTrace stackTrace = new StackTrace(); var sb = new StringBuilder(); if (!forProcessing) { sb.AppendLine($"{stackTrace.GetFrame(2).GetMethod().Name}"); var varSelHeuName = _variableSelectionHeuristics.GetType().Name; sb.AppendLine($"{varSelHeuName.Remove(varSelHeuName.Length - 2)}"); var valSelHeuName = ValueSelectionHeuristics.GetType().Name; sb.AppendLine($"{valSelHeuName.Remove(valSelHeuName.Length - 2)}"); sb.AppendLine("-------------------------------------------------"); sb.AppendLine($"visited nodes to first solution: {(_hasSolution ? _visitedNodesToFirst.ToString() : "")}"); sb.AppendLine($"backtracks to first solution: {_backtracksNumberToFirstSolution}"); sb.AppendLine($"all visited nodes: {_visitedNodes}"); sb.AppendLine($"all backtracks: {_backtracksNumber}"); sb.AppendLine($"found solution: {_hasSolution}"); sb.AppendLine($"solutions number: {_foundSolutionsNumber}"); sb.AppendLine($"time to first solution: {(_hasSolution ? _timeToFirst.Elapsed.ToString() : " ")}"); sb.AppendLine($"time to complete: {_timeToComplete.Elapsed}\n"); } else { sb.Append($"{ (_hasSolution ? _visitedNodesToFirst.ToString() : "")}"); sb.Append($", {_backtracksNumberToFirstSolution}"); sb.Append($", {_visitedNodes}"); sb.Append($", {_backtracksNumber}"); sb.Append($", {_hasSolution}"); sb.Append($", {_foundSolutionsNumber}"); sb.Append($", {(_hasSolution ? _timeToFirst.ElapsedMilliseconds.ToString() : " ")}"); sb.Append($", {_timeToComplete.ElapsedMilliseconds}"); } return(sb.ToString()); }
public override void BacktrackingAlgorithm(bool printSolutions = false) { base.BacktrackingAlgorithm(printSolutions); var varHeu = _variableSelectionHeuristics.GetType().Name; var valHeu = ValueSelectionHeuristics.GetType().Name; var fileName = $"{_sudoku.Id.ToString()}_solutions_bt_{varHeu}_{valHeu}"; if (FileSaveDirectory != null) { fileName = $@"{FileSaveDirectory}\{fileName}"; } base.SaveSolutionsInfoToFile(fileName); foreach (var sol in _foundSolutions) { SaveSolutionToFile(fileName, sol); } }