Пример #1
0
        static void Main(string[] args)
        {
            TriangleNumberGenerator tng = new TriangleNumberGenerator();
            FactorsGenerator        fg  = new FactorsGenerator();
            int maxDivisorCount         = 0;

            while (true)
            {
                int factors = fg.GeneratorDistinctDivisorCount(tng.Next());
                if (factors > maxDivisorCount)
                {
                    maxDivisorCount = factors;
                }
                Console.Out.WriteLine(string.Format("number:{0} - count:{1} - maxcount: {2}", tng.CurrentTriangle, factors, maxDivisorCount));
                if (factors <= 500)
                {
                    continue;
                }
                Debug.Write(tng.CurrentTriangle + "\r\n");
                Console.Out.Write(tng.CurrentTriangle + ":");
                Console.Write("\r\n");
                break;
            }
            Console.Read();
        }
        public void TestTriangleNthNumber()
        {
            var expected = 40755;
            var actual   = TriangleNumberGenerator.NthNumber(285);

            Assert.AreEqual(expected, actual);
        }
Пример #3
0
        private static bool IsTriangleNumber(int s)
        {
            if (triangleNums.Count() == 0 || triangleNums.Max() < s)
            {
                triangleNums = TriangleNumberGenerator.Generate().TakeWhile(n => n <= s).ToList();
            }

            return(triangleNums.Contains(s));
        }
        public void TestTriangleNumberGenerator()
        {
            var triangeNumbers = TriangleNumberGenerator.Generate().Take(7).ToArray();
            var expected       = new[] { 1, 3, 6, 10, 15, 21, 28 };

            Assert.AreEqual(expected.Length, triangeNumbers.Length);

            for (int i = 0; i < expected.Length; i++)
            {
                Assert.AreEqual(expected[i], (int)triangeNumbers[i]);
            }
        }
        public void Solve()
        {
            int threshold = 500;

            INumberGenerator  numberGenerator = new TriangleNumberGenerator();
            INumberBreaker    numberBreaker   = new DivisorNumberBreaker();
            IConditionChecker condition       = new CounterConditionChecker(threshold);

            foreach (var i in numberGenerator.Numbers)
            {
                List <int> parts = numberBreaker.BreakNumber(i);
                if (condition.Check(parts))
                {
                    this.Print(i);
                    break;
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Solves the problem
        /// </summary>
        /// <returns>The problem solution</returns>
        public long Solve()
        {
            Boolean   IsValid = false;
            long      count   = START_TRIANGLE_INDEX;
            long      number;
            Stopwatch sw = new Stopwatch();

            sw.Start();
            do
            {
                count++;
                number  = TriangleNumberGenerator.Get(count);
                IsValid = PentagonNumbers.IsPentagonalNumber(number) && IsHexagonalNumber(number);
            } while (!IsValid);
            sw.Stop();
            Console.WriteLine("Elapsed: {0}s, {1}ms", sw.Elapsed.Seconds, sw.Elapsed.Milliseconds);
            return(number);
        }
        /// <summary>
        /// Solve the problem
        /// </summary>
        /// <returns>The sum result</returns>
        private long Solve()
        {
            int          factorCount = 0;
            long         tNumber     = 0;
            int          index       = 1;
            FactorFinder factors;

            while (factorCount <= 500)
            {
                tNumber     = TriangleNumberGenerator.Get(index);
                factors     = new FactorFinder(tNumber);
                factorCount = factors.CountFactors();
                index++;
                //Console.Clear();
                //Console.WriteLine("Triangle Number: " + index);
                //Console.WriteLine("Index: " + index);
                //Console.WriteLine("Factor Count: " + factorCount);
            }

            return(tNumber);
        }
Пример #8
0
        static void Main(string[] args)
        {
            // for this problem, we don't need to know the actual divisors, only the number of them
            // if you factor a number in to its prime factors, you can calculate the number of divisors
            var triangleNumbers = TriangleNumberGenerator.Generate()
                                  .Select(l =>
            {
                var numberOfFactors = long.Parse(l.ToString()).Factorize().Count();
                Console.WriteLine(String.Format("{0} {1}", l, numberOfFactors));

                return(new
                {
                    l = l,
                    numFactors = numberOfFactors
                });
            })
                                  .Where(l => l.numFactors > 500)
                                  .FirstOrDefault();

            Console.WriteLine(triangleNumbers);
            Console.ReadKey();
        }