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