Ejemplo n.º 1
0
        private void ProcessFrame(StringBuilder sb, StackFrame frame)
        {
            var m = frame.GetMethod();

            sb.Append("  in ").Append(m.DeclaringType).Append(".").Append(m.Name);
            var x = frame.GetFileLineNumber();
            var y = frame.GetFileColumnNumber();

            if (x != 0 && y != 0)
            {
                sb.Append(" at (").Append(x).Append(",").Append(y).Append(")");
            }
            sb.Append(", ");
            var n = frame.GetILOffset();

            if (n > 0)
            {
                sb.Append("#").Append(n).Append(": ");
                var info = new RuntimeOpInfo(m, n);
                var p    = new OpCodeProcessor(sb, info, false);
                p.Append("; ");
                p.Append(";");
                sb.TrimEnd(" ");
            }
            sb.AppendLine();
        }
Ejemplo n.º 2
0
    public void GetPart1()
    {
        var generatedInputs = new List <int[]>();

        for (var a = 0; a <= 4; a++)
        {
            for (var b = 0; b <= 4; b++)
            {
                for (var c = 0; c <= 4; c++)
                {
                    for (var d = 0; d <= 4; d++)
                    {
                        for (var e = 0; e <= 4; e++)
                        {
                            var array = new int[]
                            {
                                a,
                                b,
                                c,
                                d,
                                e
                            };

                            if (a == b || a == c || a == d || a == e)
                            {
                                continue;
                            }
                            if (b == c || b == d || b == e)
                            {
                                continue;
                            }
                            if (c == d || c == e)
                            {
                                continue;
                            }
                            if (d == e)
                            {
                                continue;
                            }

                            generatedInputs.Add(array);
                        }
                    }
                }
            }
        }

        var highest = 0;

        foreach (var inputs in generatedInputs)
        {
            var amp1 = new OpCodeProcessor();
            var amp2 = new OpCodeProcessor();
            var amp3 = new OpCodeProcessor();
            var amp4 = new OpCodeProcessor();
            var amp5 = new OpCodeProcessor();

            OpCodeProcessor[] amps =
            {
                amp1,
                amp2,
                amp3,
                amp4,
                amp5
            };

            int output = 0;
            for (var i = 0; i < amps.Length; i++)
            {
                amps[i].Inputs.Enqueue(inputs[i]);
                amps[i].Inputs.Enqueue(output);

                amps[i].ProcessOpCodes(OpCodes);
                output = amps[i].Output;
            }

            if (output > highest)
            {
                highest = output;
            }
        }

        Console.WriteLine($"Final output: {highest}");
    }