Exemple #1
0
        private static ProductAndFactors GetLargestProductFromUpperLeftHalfOfMatrix(List <List <int> > numberGrid, int countOfAdjacentNumbers)
        {
            var result = new ProductAndFactors();

            for (var i = numberGrid.Count - 1; i >= countOfAdjacentNumbers - 1; i--)
            {
                var startingPointRow    = i;
                var startingPointColumn = 0;
                var series = new List <int>();
                for (var j = 0; j <= i; j++)
                {
                    series.Add(numberGrid[startingPointRow - j][startingPointColumn + j]);
                }

                var currentColumn = ProductInSeries.GetLargestProductInASeries(series, countOfAdjacentNumbers);
                if (currentColumn.Product <= result.Product)
                {
                    continue;
                }

                result.Product = currentColumn.Product;
                result.Factors.Clear();
                result.Factors = currentColumn.Factors;
            }
            return(result);
        }
Exemple #2
0
        private static ProductAndFactors GetLargestProductHorizontally(List <List <int> > numberGrid, int countOfAdjacentNumbers)
        {
            var result = new ProductAndFactors();

            foreach (var row in numberGrid)
            {
                var currentRow = ProductInSeries.GetLargestProductInASeries(row, countOfAdjacentNumbers);
                if (currentRow.Product <= result.Product)
                {
                    continue;
                }

                result.Product = currentRow.Product;
                result.Factors.Clear();
                result.Factors = currentRow.Factors;
            }
            return(result);
        }
Exemple #3
0
        private static ProductAndFactors GetLargestProductVertically(List <List <int> > numberGrid, int countOfAdjacentNumbers)
        {
            var result = new ProductAndFactors();

            for (var i = 0; i < numberGrid.Count; i++)
            {
                var series = new List <int>();
                foreach (var row in numberGrid)
                {
                    series.Add(row[i]);
                }
                var currentColumn = ProductInSeries.GetLargestProductInASeries(series, countOfAdjacentNumbers);
                if (currentColumn.Product <= result.Product)
                {
                    continue;
                }

                result.Product = currentColumn.Product;
                result.Factors.Clear();
                result.Factors = currentColumn.Factors;
            }
            return(result);
        }