예제 #1
0
 public static void OutputFactorizationTree(FactorizationTree tree, long userNumber)
 {
     Console.Write($"Factorization Tree of {userNumber}: ");
     tree.Root.Print();
     Console.WriteLine("\n");
     return;
 }
예제 #2
0
        static void Main(string[] args)
        {
            string userInput    = null;
            bool   userContinue = true;

            while (userContinue)
            {
                userInput = StandardInputMessage.RequestInput();

                if (DataValidation.ValidateInput(userInput) == false)
                {
                    bool retry = StandardInputMessage.RePrompt();
                    if (retry == false)
                    {
                        userContinue         = false;
                        Environment.ExitCode = 22;
                    }
                }
                else
                {
                    long userNumber = DataManipulation.ReturnValue(userInput);
                    if (DataValidation.ValidateComposite(userNumber) == false)
                    {
                        bool retry = StandardInputMessage.RePrompt(); //refactor using userContinue from RePrompt()
                        if (retry == false)
                        {
                            userContinue         = false;
                            Environment.ExitCode = 44;
                        }
                    }
                    else
                    {
                        CompositeNumber userComposite = new CompositeNumber(userNumber);

                        LinkedList <IFactor> factors = Factorize.Factor(userComposite);

                        List <IFactor>    primeNumbers     = DataManipulation.ReturnPrimes(factors);     //Should be list of primes
                        List <IFactor>    compositeNumbers = DataManipulation.ReturnComposites(factors); //Should be list of composites
                        FactorizationTree factorTree       = DataManipulation.ReturnPopulatedTree(factors);

                        StandardOutputMessage.OutputFactors(compositeNumbers, userNumber);
                        StandardOutputMessage.OutputFactors(primeNumbers, userNumber);
                        StandardOutputMessage.OutputFactorizationTree(factorTree, userNumber);

                        bool retry = StandardInputMessage.RePrompt();
                        if (retry == false)
                        {
                            userContinue         = false;
                            Environment.ExitCode = 100;
                        }
                    }
                }
            }
        }
        public static FactorizationTree ReturnPopulatedTree(LinkedList <IFactor> factors)
        {
            FactorizationTree tree = new FactorizationTree();

            foreach (var factor in factors)
            {
                tree.Add(factor);
            }

            return(tree);
        }
예제 #4
0
        public void FactorizationTree_Add_AddRoot(long root)
        {
            // Arrange
            CompositeNumber   compositeNumber = new CompositeNumber(root);
            FactorizationTree testTree        = new FactorizationTree();

            // Act
            testTree.Add(compositeNumber);

            // Assert
            Assert.True(testTree.Count == 1);
            Assert.True(testTree.Root.value == root);
        }
예제 #5
0
        public void FactorizationTree_Add_AddSubNodes(long root, long sub1, long sub2)
        {
            // Arrange
            PrimeNumber     prime1          = new PrimeNumber(sub1);
            PrimeNumber     prime2          = new PrimeNumber(sub2);
            CompositeNumber compositeNumber = new CompositeNumber(root);

            FactorizationTree testTree = new FactorizationTree();

            // Act
            testTree.Add(compositeNumber);
            testTree.Add(prime1);
            testTree.Add(prime2);

            // Assert
            Assert.True(testTree.Count == 3);
            Assert.True(testTree.Root.value == root);
        }