Esempio n. 1
0
        private static long RunDroneProgram(long[] program, int x, int y)
        {
            long result = 0;

            IntcodeMachine.RunProgram(
                program,
                v => { result = v; },
                x,
                y
                );
            return(result);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var code    = File.ReadLines("input.txt").FirstOrDefault();
            var program = IntcodeMachine.ParseCode(code);

            long affectedPointCount = RunPart1(program);

            Console.WriteLine($"Part 1 Result = {affectedPointCount}");

            var firstPoint = RunPart2(program, 100);

            Console.WriteLine($"Part 2 Result = {firstPoint.x * 10000 + firstPoint.y} [{firstPoint}]");
        }
Esempio n. 3
0
        public static bool RunProgram(long[] program, Action <long> write, Queue <long> input = default)
        {
            var machine = new IntcodeMachine(program);

            while (true)
            {
                var result = machine.StepMany(input);
                switch (result.State)
                {
                case ExecuteState.HaveOutput:
                    write?.Invoke(result.Output.Value);
                    break;

                case ExecuteState.NeedInput:
                    return(false);

                case ExecuteState.Halted:
                    return(true);
                }
            }
        }