Example #1
0
        private string PartA(IEnumerable <string> data)
        {
            var gameKid = new GameKid();
            var cart    = GameKidCart.Parse(data);

            gameKid.RunCart(cart);

            return("Accumulator = " + gameKid.Accumulator);
        }
Example #2
0
        private string PartB(IEnumerable <string> data)
        {
            var gameKid = new GameKid();
            var cart    = GameKidCart.Parse(data);

            gameKid.RunCart(cart);

            var usedInstructions = gameKid.UsedInstructions.ToArray();

            // narrow our search by only modifying instructions we actually use

            foreach (var i in usedInstructions)
            {
                var instruction = cart.Instructions[i];
                var prevOp      = instruction.Operation;

                if (prevOp == "jmp")
                {
                    instruction.Operation = "nop";
                }
                else if (prevOp == "nop")
                {
                    instruction.Operation = "jmp";
                }
                else
                {
                    continue;
                }

                if (gameKid.RunCart(cart))
                {
                    return("Fixed Accumulator = " + gameKid.Accumulator);
                }

                // undo
                instruction.Operation = prevOp;
            }

            return("Failed");
        }