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); }
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; } } }
/// <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); }
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(); }