Example #1
0
        public IEnumerable <Result> GetResults(IInputRepository inputRepository)
        {
            IEnumerable <int> input = inputRepository.GetDay01Input();

            yield return(new Result(input.Select(nr => (int)Math.Round((decimal)(nr / 3)) - 2).Sum()));

            yield return(new Result(input.Select(nr => getFuelRequiredForWeightRecursing(nr, 0)).Sum()));
        }
Example #2
0
 public AddNewMessageHandler(IMessageRepository messageRepository, IProjectRepository projectRepository,
                             IInputRepository inputRepository, IAuthorRepository authorRepository)
 {
     _messageRepository = messageRepository;
     _projectRepository = projectRepository;
     _inputRepository   = inputRepository;
     _authorRepository  = authorRepository;
 }
Example #3
0
        private ICalculator CreateArithmeticController(IInputRepository inputRepositoryObjectStub, IPrintRepository printRepositoryObjectStub)
        {
            ISeparationEquation  separationEquation  = new ArithmeticSeparationEquation();
            ICalculationEquation calculationEquation = new ArithmeticCalculationEquation();

            ICalculatorRepository calculatorRepository = new CalculatorRepository(separationEquation, calculationEquation);

            CalculatorController calculator = new CalculatorController(inputRepositoryObjectStub, printRepositoryObjectStub, calculatorRepository);

            return(calculator);
        }
Example #4
0
 public NewInputIntegrationEventHandler(
     ILogger <NewInputIntegrationEventHandler> logger,
     IRabbitMQEventBus eventBus,
     IInputRepository inputRepository,
     IDiffLogic logic
     )
 {
     _logger          = logger;
     _eventBus        = eventBus;
     _inputRepository = inputRepository;
     _logic           = logic;
 }
Example #5
0
 public DiffController(
     ILogger <DiffController> logger,
     IDiffRepository diffRepository,
     IInputRepository inputRepository,
     IMapper mapper,
     IRabbitMQEventBus eventBus
     )
 {
     _logger          = logger;
     _diffRepository  = diffRepository;
     _inputRepository = inputRepository;
     _mapper          = mapper;
     _eventBus        = eventBus;
 }
Example #6
0
        public IEnumerable <Result> GetResults(IInputRepository inputRepository)
        {
            int[] integers = inputRepository.GetDay02Input().ToArray();

            // These changes are made in the inputfile
            // integers[1] = 12;
            // integers[2] = 2;

            bool isStopped = false;

            for (int i = 0; !isStopped; i += 4)
            {
                int param1 = integers[integers[i + 1]];
                int param2 = integers[integers[i + 2]];

                int register = integers[i + 3];

                if (integers[i] == 1)
                {
                    integers[register] = param1 + param2;
                }
                else if (integers[i] == 2)
                {
                    integers[register] = param1 * param2;
                }
                else if (integers[i] == 99)
                {
                    isStopped = true;
                }
                else
                {
                    throw new ArgumentException();
                }
            }

            yield return(new Result(integers[0]));
        }
Example #7
0
 public InputController(InputHandler handler, IInputRepository repository)
 {
     _handler    = handler;
     _repository = repository;
 }
Example #8
0
 public InputHandler(ICustomerRepository customerRepository, IStatementRepository statementRepository, IInputRepository inputRepository)
 {
     _customerRepository  = customerRepository;
     _statementRepository = statementRepository;
     _inputRepository     = inputRepository;
 }
Example #9
0
 public InputsController(IInputRepository inputRepository)
 {
     _inputRepository = inputRepository;
 }
Example #10
0
 public CalculatorController(IInputRepository inputRepository, IPrintRepository printRepository, ICalculatorRepository calculatorRepository)
 {
     this.inputRepository      = inputRepository;
     this.printRepository      = printRepository;
     this.calculatorRepository = calculatorRepository;
 }
Example #11
0
        public IEnumerable <Result> GetResults(IInputRepository inputRepository)
        {
            List <List <Line> > paths         = new List <List <Line> >();
            List <Point>        intersections = new List <Point>();

            IEnumerable <IEnumerable <Move> > LineMoveInstructions = inputRepository.GetDay03Input();

            foreach (IEnumerable <Move> moveInstuctions in LineMoveInstructions)
            {
                List <Line> currentPath     = new List <Line>(moveInstuctions.Count());
                Point       currentPosition = new Point(0, 0);

                foreach (Move move in moveInstuctions)
                {
                    Point newPosition = move.Direction switch
                    {
                        Direction.up => new Point(currentPosition.X, currentPosition.Y + move.Steps),
                        Direction.down => new Point(currentPosition.X, currentPosition.Y - move.Steps),
                        Direction.left => new Point(currentPosition.X - move.Steps, currentPosition.Y),
                        Direction.right => new Point(currentPosition.X + move.Steps, currentPosition.Y),
                        _ => throw new Exception(),
                    };

                    Line newline = new Line(move.Direction, currentPosition.X, newPosition.X, currentPosition.Y, newPosition.Y);
                    currentPath.Add(newline);


                    foreach (IEnumerable <Line> path in paths)
                    {
                        foreach (Line line in path.Where(l => l.Orientation != newline.Orientation))
                        {
                            if (newline.Orientation == Orientation.horizontal)
                            {
                                if (TryGetIntersections(newline, line, out Point intersection))
                                {
                                    intersections.Add(intersection);
                                }
                            }
                            else
                            {
                                if (TryGetIntersections(line, newline, out Point intersection))
                                {
                                    intersections.Add(intersection);
                                }
                            }
                        }
                    }
                    currentPosition = newPosition;
                }
                paths.Add(currentPath);
            }

            int smallesManhattenDistance = int.MaxValue;

            foreach (Point crossing in intersections)
            {
                int manhattanDistance = Math.Abs(crossing.X) + Math.Abs(crossing.Y);
                if (manhattanDistance < smallesManhattenDistance)
                {
                    smallesManhattenDistance = manhattanDistance;
                }
            }


            yield return(new Result(smallesManhattenDistance));
        }