public int GetSumCyclic4DigitsNumber3() { /* * The ordered set of three 4-digit numbers: 8128, 2882, 8281, has three interesting properties. * * The set is cyclic, in that the last two digits of each number is the first two digits of the next number (including the last number with the first). * Each polygonal type: triangle (P3,127=8128), square (P4,91=8281), and pentagonal (P5,44=2882), * is represented by a different number in the set. * This is the only set of 4-digit numbers with this property. * * */ List <int> triangleValues = E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.TriangleFunc).ToList(); List <int> squareValues = E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.SquareFunc).ToList(); List <int> pentagonalValues = E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.PentagonalFunc).ToList(); List <List <int> > candiates = new List <List <int> >() { triangleValues, squareValues, pentagonalValues }; List <int> result = null; for (int i = 0; i < candiates.Count; i++) { var current = candiates[i]; var nextCandidates = candiates.ToList(); nextCandidates.Remove(current); for (int p = 0; p < current.Count; p++) { var polynumber = current[p]; List <int> founded = new List <int>() { polynumber }; result = Recursive(nextCandidates, founded, polynumber); if (result != null) { return(result.Sum()); } } } return(0); }
public int GetSumCyclic4DigitsNumber() { List <List <int> > candiates = new List <List <int> >() { E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.TriangleFunc).ToList(), E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.SquareFunc).ToList(), E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.PentagonalFunc).ToList(), E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.HexagonalFunc).ToList(), E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.HeptagonalFunc).ToList(), E061CyclicalFigurateNumbers.Polygonal(E061CyclicalFigurateNumbers.OctagonalFunc).ToList() }; for (int i = 0; i < candiates.Count; i++) { var current = candiates[i]; var nextCandidates = candiates.ToList(); nextCandidates.Remove(current); for (int p = 0; p < current.Count; p++) { var polynumber = current[p]; List <int> founded = new List <int>() { polynumber }; var result = Recursive(nextCandidates, founded, polynumber); if (result != null) { return(result.Sum()); } } } throw new Exception("Not found solution"); }