Beispiel #1
0
        public void CodedTriangleNumbers()
        {
            string content   = ScriptTools.Cat(@"C:\euler\p042_words.txt");
            var    words     = content.Replace("\"", "").Split(new char[] { ',' });
            var    numbers   = words.Map <string, int>(word => word.Map <char, int>(c => c - 'A' + 1).Sum());
            var    triangles = Itertools.Range(1, 1000).Map <int, int>(i => i * (i + 1) / 2);
            var    result    = 0;

            foreach (var number in numbers)
            {
                if (triangles.Contains(number))
                {
                    result++;
                }
            }
            Console.WriteLine("result is {0}", result);
        }
Beispiel #2
0
        public void TriangularPentagonalAndHexagonal()
        {
            var triangulars = Itertools.Range(1, (long)100000).Map <long, long>(n => n * (n + 1) / 2);
            var pentagonals = Itertools.Range(1, (long)100000).Map <long, long>(n => n * (3 * n - 1) / 2);
            var hexagonals  = Itertools.Range(1, (long)100000).Map <long, long>(n => n * (2 * n - 1));

            var zipped = triangulars
                         .Concat(pentagonals)
                         .Concat(hexagonals)
                         .Group()
                         .Filter(g => g.Length == 3);

            foreach (var item in zipped)
            {
                Console.WriteLine("{0}", item[0]);
            }
        }
Beispiel #3
0
        public void PrimePowerTriples()
        {
            // 7072
            // 369
            // 85
            var squres = Itertools
                         .Range(2, 7072)
                         .Filter(x => x.IsPrime())
                         .Map <int, int>(x => x * x);
            var cubes = Itertools
                        .Range(2, 369)
                        .Filter(x => x.IsPrime())
                        .Map <int, int>(x => x * x * x);
            var fourth = Itertools
                         .Range(2, 85)
                         .Filter(x => x.IsPrime())
                         .Map <int, int>(x => x * x * x * x);
            var numbers = new HashSet <int>();

            foreach (var s in squres)
            {
                foreach (var c in cubes)
                {
                    foreach (var f in fourth)
                    {
                        var p = s + c + f;
                        if (p > 50000000)
                        {
                            continue;
                        }
                        if (!numbers.Contains(p))
                        {
                            numbers.Add(p);
                        }
                    }
                }
            }


            Console.WriteLine("{0}", numbers.Count());
        }