Example #1
0
 public static bool IsPandigital(int n)
 {
     if (n > 1000000000)
     {
         return(false);
     }
     int[] nums = MiscFunctions.DigitsFromInt(n);
     int[] dig  = new int[nums.Length];
     for (int i = 0; i < dig.Length; i++)
     {
         dig[i] = i + 1;
     }
     return(nums.OrderBy(x => x).ToArray().SequenceEqual(dig));
 }
Example #2
0
        public static List <int> rotations(int n)
        {
            List <int> rots        = new List <int>();
            List <int> startingint = MiscFunctions.DigitsFromInt(n).ToList();

            rots.Add(n);
            for (int i = 1; i < startingint.Count; i++)
            {
                startingint.Add(startingint[0]);
                startingint.RemoveAt(0);
                rots.Add(MiscFunctions.ListToInt(startingint));
            }
            return(rots);
        }
Example #3
0
        public static int DigitFifthPowers(int n)
        {
            List <int> digits = new List <int>();
            int        limit  = (int)Math.Pow(10, n) * 100;

            for (int i = 2; i < limit; i++)
            {
                int[] arr = MiscFunctions.DigitsFromInt(i);
                if (PowerSum(arr, n) == i)
                {
                    digits.Add(i);
                }
            }
            return(digits.Sum());
        }
Example #4
0
        public static double CancelOutSameDigit(int a, int b)
        {
            List <int> digitsa   = MiscFunctions.DigitsFromInt(a).ToList();
            List <int> digitsb   = MiscFunctions.DigitsFromInt(b).ToList();
            List <int> intersect = digitsa.Intersect(digitsb).ToList();

            if (intersect.Count == 1)
            {
                digitsa.Remove(intersect[0]);
                digitsb.Remove(intersect[0]);

                if (digitsb[0] != 0)
                {
                    return((double)digitsa[0] / (double)digitsb[0]);
                }
            }

            return(0);
        }
Example #5
0
        public static int DigitFactorials(int n)
        {
            int sum = 0;

            CombinatoricFunctions.generatefactorial(10);
            for (int i = 3; i < n; i++)
            {
                int[]      digits  = MiscFunctions.DigitsFromInt(i);
                BigInteger tempsum = 0;
                foreach (int digit in digits)
                {
                    tempsum += CombinatoricFunctions.factorial(digit);
                }
                if (tempsum == i)
                {
                    sum += i;
                }
            }
            return(sum);
        }
Example #6
0
        public static int PandigitalProducts()
        {
            HashSet <int> products = new HashSet <int>();

            for (int i = 1; i < 5000; i++)
            {
                for (int j = 1; j < 5000; j++)
                {
                    List <int> tempdigits = new List <int>();
                    tempdigits.AddRange(MiscFunctions.DigitsFromInt(i));
                    tempdigits.AddRange(MiscFunctions.DigitsFromInt(j));
                    tempdigits.AddRange(MiscFunctions.DigitsFromInt(i * j));

                    if (MiscFunctions.IsPandigital(tempdigits))
                    {
                        products.Add(i * j);
                    }
                }
            }
            return(products.Sum());
        }