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}"); }
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!"); }