Esempio n. 1
0
        public long Run(int input)
        {
            var intcode = new Intcode(_program);

            intcode.AddInputs(input);
            return(intcode.Execute().First());
        }
Esempio n. 2
0
        private IEnumerable <(int, int)> GetBounds(
            int maxX   = int.MaxValue,
            int maxY   = int.MaxValue,
            int startY = 0)
        {
            int prevWidth = 0;
            int startX    = 0;

            for (int y = startY; y < maxY; y++)
            {
                bool isFoundFirst     = false;
                int  first            = -1;
                bool isReturnedAnswer = false;
                for (int x = startX; x < maxX; x++)
                {
                    var ic = new Intcode(_program);
                    ic.AddInputs(x, y);
                    var output = (int)ic.Execute().First();
                    if (!isFoundFirst && output == 1)
                    {
                        isFoundFirst = true;
                        first        = x;
                        startX       = x;
                        if (prevWidth > 0)
                        {
                            x += prevWidth - 1;
                        }
                    }
                    else if (!isFoundFirst && x - startX > 10)
                    {
                        prevWidth = 0;
                        yield return(-1, -1);

                        isReturnedAnswer = true;
                        break;
                    }
                    else if (isFoundFirst && output == 0)
                    {
                        prevWidth = x - first - 1;
                        yield return(first, x - 1);

                        isReturnedAnswer = true;
                        break;
                    }
                }
                if (!isReturnedAnswer)
                {
                    if (first == -1)
                    {
                        prevWidth = 0;
                        yield return(-1, -1);
                    }
                    else
                    {
                        prevWidth = maxX - first - 1;
                        yield return(first, maxX - 1);
                    }
                }
            }
        }
Esempio n. 3
0
        public long DoCalc(int input)
        {
            var intcode = new Intcode(_program);

            intcode.AddInputs(input);
            return(intcode.Execute().Last());
        }