Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }