private FluentString GetPropReport(ISolver solver, SolverState commandState) { Report.WriteLine("Solver: {0}", SolverHelper.Describe(solver)); var propsReport = new FluentString(); propsReport.Append(solver.TypeDescriptor); try { var typeDescriptorProps = solver.GetTypeDescriptorProps(commandState); if (typeDescriptorProps != null) { foreach (var(name, text) in typeDescriptorProps) { propsReport.AppendLine($"-> {name,20}: {text}"); Report.WriteLine($"-> {name,20}: {text}"); } } } catch (NotSupportedException) { var msg = $"Solver [{solver.GetType().Name}] does not support {typeof(IExtendedFunctionalityDescriptor).Name}"; Report.WriteLine(msg); propsReport.AppendLine(msg); } catch (NotImplementedException) { var msg = $"Solver [{solver.GetType().Name}] does not support {typeof(IExtendedFunctionalityDescriptor).Name}"; Report.WriteLine(msg); propsReport.AppendLine(msg); } return(propsReport); }
public void RenderToGraphVis() { var sample = new int[] { 23, 5, 12, 55, 67, 34, 33 }; var bst = new BinarySearchTree <int>(new IntComparer()); foreach (var val in sample) { var n = bst.Add(val); } var sb = new FluentString(); sb.AppendLine("digraph g {"); sb.AppendLine("rankdir=TB;"); foreach (var node in bst.GetNodes()) { if (node.Left != null) { sb.AppendLine($"\t{node.Value}->{node.Left.Value}[label=\"L\"]"); } if (node.Right != null) { sb.AppendLine($"\t{node.Value}->{node.Right.Value}[label=\"R\"]"); } // if (node.Parent != null) sb.AppendLine($"\t{node.Value}->{node.Parent.Value}"); } sb.AppendLine("}"); outp.WriteLine(sb); }