예제 #1
0
        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);
        }
예제 #2
0
        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);
        }