コード例 #1
0
        private int BruteSolve()
        {
            var maxPerimeter = Sequences.PythagoreanTriplets()
                               .TakeWhile(x => x.Item1 + x.Item2 + x.Item3 < 1000)
                               .ToLookup(x => x.Item1 + x.Item2 + x.Item3)
                               .Aggregate(Tuple.Create(0, 0), (maxes, perimeters) =>
                                          perimeters.Count() > maxes.Item1 ? Tuple.Create(perimeters.Count(), perimeters.Key) : maxes);

            return(maxPerimeter.Item2);
        }
コード例 #2
0
ファイル: Problem009.cs プロジェクト: ajdust/euler
 static Tuple <int, int, int> SolveAbcAddTo1000()
 {
     foreach (var triplet in Sequences.PythagoreanTriplets())
     {
         var a = triplet.Item1;
         var b = triplet.Item2;
         var c = triplet.Item3;
         if (a + b + c == 1000)
         {
             return(new Tuple <int, int, int>(a, b, c));
         }
         if (a + b + c > 2000)
         {
             break;
         }
     }
     return(null);
 }