public static long TriangularPentagonalHexagonal()
        {
            var  h = 144;
            long hexagonal;

            do
            {
                hexagonal = TriPenHexNumbers.HexagonalNumber(h++);
            } while (!(TriPenHexNumbers.IsPentagonNumber(hexagonal) &&
                       TriPenHexNumbers.IsTriangleNumber(hexagonal)));

            return(hexagonal);
        }
        public static long FirstTriangleNumberWithOverFiveHundredDivisors()
        {
            var  pointReached = false;
            long number       = -1;

            for (int i = 1; !pointReached; i += 2)
            {
                number = TriPenHexNumbers.TriangleNumber(i);
                if (HasMoreThan500Divisors(number))
                {
                    pointReached = true;
                }
            }

            return(number);
        }
Beispiel #3
0
        public static long MinimisedPentagonalNumbersDifference()
        {
            for (int k = 2; true; k++)
            {
                var kPentagon = TriPenHexNumbers.PentagonNumber(k);

                for (int j = k - 1; j >= 1; j--)
                {
                    var jPentagon = TriPenHexNumbers.PentagonNumber(j);
                    var diff      = kPentagon - jPentagon;

                    if (TriPenHexNumbers.IsPentagonNumber(diff) && TriPenHexNumbers.IsPentagonNumber(kPentagon + jPentagon))
                    {
                        return(diff);
                    }
                }
            }
        }
        public static int NumTriangleWords()
        {
            var triangleNumbers = new List <int> {
                1
            };
            var numTriangleWords = 0;

            foreach (var word in _words)
            {
                var wordNumber = word.Select(w => _dictionary[w]).Sum();

                if (TriPenHexNumbers.IsTriangleNumber(wordNumber))
                {
                    numTriangleWords++;
                }
            }

            return(numTriangleWords);
        }