Example #1
0
 public void Execute(AllRegisters registers)
 {
     if (Condition.IsSatisfiedBy(registers))
     {
         Instruction.Execute(registers);
     }
 }
Example #2
0
        public bool IsSatisfiedBy(AllRegisters registers)
        {
            var value  = registers.GetRegister(Register);
            var result = false;

            switch (Comparison)
            {
            case Comparison.Equal:
                result = value == Amount;
                break;

            case Comparison.NotEqual:
                result = value != Amount;
                break;

            case Comparison.GreaterThan:
                result = value > Amount;
                break;

            case Comparison.GreaterThanOrEqual:
                result = value >= Amount;
                break;

            case Comparison.LessThan:
                result = value < Amount;
                break;

            case Comparison.LessThanOrEqual:
                result = value <= Amount;
                break;
            }
            return(result);
        }
Example #3
0
        public void Execute(AllRegisters registers)
        {
            var value = registers.GetRegister(Register);

            switch (Operation)
            {
            case Operation.Increment:
                registers.SetRegister(Register, value + Amount);
                break;

            case Operation.Decrement:
                registers.SetRegister(Register, value - Amount);
                break;
            }
        }
Example #4
0
        static void Main(string[] args)
        {
            var parser       = RegisterInstructionParser.Instance;
            var input        = File.ReadAllLines("input.txt");
            var instructions = Array.ConvertAll(
                input,
                line => {
                Console.WriteLine(line);
                return(parser.Parse(line));
            }
                );
            var registers = new AllRegisters();

            foreach (var instruction in instructions)
            {
                instruction.Execute(registers);
            }
            Console.WriteLine(registers.MaximumValue);
        }