public override int Main_Int32() { var path = @".\Days\Day08\input.txt"; var str = System.IO.File.ReadAllLines(path); // Part 1 //var baseCp = new ConsolePlayer(str); //baseCp.StartExecution(); //return baseCp.Accumulator; // Part 2 var cpList = new List <ConsolePlayer>(); var threadList = new List <Thread>(); for (int i = 0; i < str.Length; i++) { var player = new ConsolePlayer(str); cpList.Add(player); var thread = new Thread(() => { Thread.CurrentThread.IsBackground = true; player.ReplaceSingleJmpNopAndExecute(i); }); thread.Start(); } while (!threadList.All(a => a.IsAlive)) { Thread.Sleep(10); } return(cpList.FirstOrDefault(a => !a.IsInfinite)?.Accumulator ?? 0); }
public override void Do(ConsolePlayer player) { player.ExecuteNext(Value); }
public override void Do(ConsolePlayer player) { player.Accumulator += Value; player.ExecuteNext(); }
public abstract void Do(ConsolePlayer player);