/// <param name="problemNum">must be zero-based indication of problem</param> public static void ProcessInput(StreamReader inputReader, int problemNum = 1) { var wires = new Helpers.WireTable(); string inputLine = null; while (!string.IsNullOrEmpty(inputLine = inputReader.ReadLine())) { var regex = new Regex("^(?<gate>.*)->(?<output>.*)$"); var match = regex.Match(inputLine); var gateString = match.Groups["gate"].Value.Trim(); var outputString = match.Groups["output"].Value.Trim(); //gateString could be a gate, a signal, or another wire. if (gateString.Contains(' ')) { var gate = ParseGate(gateString, wires); wires.SetWireSignal(outputString.ToLower(), gate); } else { var wire = ParseOperand(gateString, wires); wires.SetWireSignal(outputString.ToLower(), wire); } } //wires.PrintAllValues(); //Problem 1 var aSignal = wires.GetWire("a").GetSignal(); Console.WriteLine("Original signal on a: " + aSignal); //Problem 2 wires.SetWireSignal("b", aSignal.Value); wires.RecalculateWires(); aSignal = wires.GetWire("a").GetSignal(); Console.WriteLine("New signal on a: " + aSignal); //Console.WriteLine("Total ribbon needed: " + totalRibbon); }