public static string SolvePart1(bool test = false)
        {
            var puzzleInput = MyIO.ReadStringsFromFile(2021, 3, 1, test);
            var result      = 0;
            var gamma       = "";
            var epsilon     = "";

            if (puzzleInput.Any())
            {
                for (int i = 0; i < puzzleInput[0].Length; i++)
                {
                    var ones = CountBitsInPositionI(puzzleInput, i, out var zeros);
                    gamma   += ones > zeros ? "1" : "0";
                    epsilon += ones > zeros ? "0" : "1";
                }
            }
            result = BinaryFunctions.ConvertStringToInt(gamma) * BinaryFunctions.ConvertStringToInt(epsilon);
            return($"{result}");
        }
Example #2
0
        static void Main(string[] args)
        {
            BinaryFunctions tree = new BinaryFunctions();
            int sumdepth = 0;
            int numberOfNodes = 0;
            double minLevel = 0;

            Console.WriteLine("Enter a collection of numbers in the range [0,100], seperated by spaces:\n");
            string line = Console.ReadLine();

            string[] line_parsed = line.Split(new char[] {' '});
            for (int i = 0; i < line_parsed.Length; i++)
                tree.insert(tree.root, int.Parse(line_parsed[i]));

            Console.Write("Tree Contents: ");
            tree.inOrderTraversal(tree.root);
            numberOfNodes = tree.returnNodes();
            sumdepth = tree.countLevels(tree.root);
            minLevel = Math.Log(numberOfNodes, 2.0);
            Console.WriteLine();
            Console.WriteLine("Tree Statistics:");
            Console.WriteLine("  Number of nodes: " + numberOfNodes);          
            Console.WriteLine(" Number of levels: " + sumdepth);
            Console.WriteLine(" Minumum number of levels that a tree with " + numberOfNodes + " nodes could have = " + Math.Ceiling(minLevel));
            Console.WriteLine("Done!");
            
            
        }