Пример #1
0
        protected override void Solve(out string answer)
        {
            //Start with largest numbers to smallest.
            var left  = Enumerable.Range(100, 900).Reverse().AsParallel();
            var right = Enumerable.Range(100, 900).Reverse();
            var palindromeCandidates = new SortedSet <NumericPalindrome>();
            PalindromeManipulator palindromeManipulator = new PalindromeManipulator();

            left.ForAll(a =>
            {
                //foreach (var a in left)
                //{
                foreach (var b in right)
                {
                    var candidate = new NumericPalindrome(a * b);
                    if (palindromeManipulator.IsPalindrome(candidate._numberString))
                    {
                        palindromeCandidates.Add(candidate);
                    }
                }
            });
            var result = palindromeCandidates.Last().Number;

            answer = string.Format("The largest palindrome made from the product of two 3-digit numbers is: {0}.", result);
        }
Пример #2
0
        protected override void Solve(out string answer)
        {
            PalindromeManipulator       manipulator = new PalindromeManipulator();
            List <NumberRepresentation> list        = new List <NumberRepresentation>();
            int counter = 0;
            int sum     = 0;

            //Create Parallel stuff
            var parallels = Parallelization.GetParallelRanges(1, 999_999, 32);

            //var ranges = Enumerable.Range(1, 999_999).AsParallel();
            //foreach (var i in range)
            //ranges.ForAll(i =>
            parallels.ForAll(intrange =>
            {
                foreach (int i in intrange)
                {
                    if (i < 1_000_000)
                    {
                        NumberRepresentation number = new NumberRepresentation(i);
                        if (number.IsPalindrome)
                        {
                            lock (this)
                            {
                                list.Add(number);
                                counter++;
                                sum += number.Value;
                            }
                        }
                    }
                }
            }
                             );

            answer = $"Computing... Sum = {sum}. Count = {counter}.";
        }
Пример #3
0
 public NumberRepresentation(int value)
 {
     Number = value;
     ConvertToStrings();
     manipulator = new PalindromeManipulator();
 }