Example #1
0
        private int OptimizationAttempt1(int numDigits)
        {
            if (numDigits == 1)
            {
                return(9);
            }

            var upperLimit = (int)Math.Pow(10, numDigits) - 1;
            var lowerLimit = upperLimit - (int)Math.Pow(10, numDigits - 1);

            var           range   = new EulerRange(lowerLimit, upperLimit);
            HashSet <int> numbers = new HashSet <int>();

            //Get every multiple
            foreach (var item in range)
            {
                range.Select(x => numbers.Add(item * x)).ToList();
            }

            foreach (var item in numbers.OrderByDescending(x => x))
            {
                if (NumberStringHelper.IsNumberPalindrome(item))
                {
                    return(item);
                }
            }
            return(-1);
        }
Example #2
0
        private int BruteForce(int numDigits)
        {
            var range   = new EulerRange((int)Math.Pow(10, numDigits - 1), (int)Math.Pow(10, numDigits) - 1);
            var numbers = new List <(int left, int right, int total)>();

            //Get every multiple
            foreach (var item in range)
            {
                numbers.AddRange(range.Select(x => (x, item, item * x)));
            }

            foreach (var item in numbers.OrderByDescending(x => x.total))
            {
                if (NumberStringHelper.IsNumberPalindrome(item.total))
                {
                    return(item.total);
                }
            }

            return(-1);
        }
Example #3
0
    public void NumberIsPalindromTest(int attempt, bool expected)
    {
        var result = NumberStringHelper.IsNumberPalindrome(attempt);

        Assert.AreEqual(expected, result);
    }