Пример #1
0
        public IEnumerable <int> Problem13()
        {
            var list      = new List <List <int> >();
            var fileLines = File.ReadAllLines("C:\\Phil\\PE\\ProjectEuler\\ProjectEuler\\Problems\\BigNumbers.txt").ToList();
            var nums      = fileLines.Select(BigNumberHelper.GetAsListRepresentingNumber).ToList();

            return(BigNumberHelper.AddListRepresentingNumbers(nums).ToArray().Reverse().Take(10));
        }
Пример #2
0
        public void Problem97()
        {
            var q  = Enumerable.Repeat(2, 7830457);
            var rt = q.Aggregate(Enumerable.Repeat <int>(1, 1).ToList(), (x, y) => BigNumberHelper.MultiplyListRepresentingNumber(x, y, 10));

            //MultiplyListRepresentingNumberVoid(rt, 28433);
            var d = BigNumberHelper.GetAsListRepresentingNumber(28433);

            var s = BigNumberHelper.MultiplyListRepresentingNumber(rt, d);
        }
Пример #3
0
        public int DigitSumEqual(int upperLimit, Func <int, int> digitMap)
        {
            var digitMapLookup = new KeyValueMap <int, int>(digitMap);
            Func <IEnumerable <int>, int> digitSum = xs => xs.Select(digitMapLookup.GetValue).Sum();

            return(Enumerable.Range(10, upperLimit)
                   .Select(x => new { Num = x, ListNum = BigNumberHelper.GetAsListRepresentingNumber(x) })
                   .Where(x => x.Num == digitSum(x.ListNum))
                   .Sum(x => x.Num));
        }
Пример #4
0
        /*public void ConcealedSquare()
         * {
         *  var numbers = Enumerable.Repeat(Enumerable.Range(0, 10), 10);
         *  IEnumerable<IEnumerable<int>> seed = new IEnumerable<int>[] { Enumerable.Empty<int>() };
         *  var test = Enumerable.Range(1, 10).Reverse().Select(w=> SpecialMod(w,10));
         *  var hmm = test.Aggregate(Enumerable.Empty<int>(), (d, f) => d.Concat(ToEnumerable(0).Concat(ToEnumerable(f)))).Skip(1);
         *  Func<int, bool>[] bry = hmm.Select((x, i) => SpecialMod(i, 2) == 0 ? (Func<int, bool>)(s => s == x) : h => true).ToArray();
         *  int index = 0;
         *  var t = numbers.Aggregate(seed, (x, i) => Agg(x, i, () => index++, bry[index]));
         *  t.ToList();
         * }
         *
         * private IEnumerable<IEnumerable<int>> Agg(IEnumerable<IEnumerable<int>> x, IEnumerable<int> i, Action adder, Func<int, bool> func)
         * {
         *  var toReturn = x.SelectMany(y => i, (a, b) => a.Concat(ToEnumerable(b))).Where(q => func(SpecialMod(DiagSum2(q), 10))).ToList();
         *  adder();
         *  return toReturn;
         * }*/

        public void Problem206()
        {
            var numbers = Enumerable.Repeat(Enumerable.Range(0, 10), 10);
            IEnumerable <IEnumerable <int> > seed = new IEnumerable <int>[] { Enumerable.Empty <int>() };
            var seed2 = seed.Select(h => Tuple.Create(h, 0));
            var test  = Enumerable.Range(1, 10).Reverse().Select(w => SpecialMod(w, 10));
            var hmm   = test.Aggregate(Enumerable.Empty <int>(), (d, f) => d.Concat(ToEnumerable(0).Concat(ToEnumerable(f)))).Skip(1);

            Func <int, bool>[] bry = hmm.Select((x, i) => SpecialMod(i, 2) == 0 ? (Func <int, bool>)(s => s == x) : h => true).ToArray();
            int index = 0;
            var t     = numbers.Aggregate(seed2, (x, i) => Agg(x, i, () => index++, bry[index])).ToList();

            /*while (index < 19)
             * {
             *  var temp = t.Select(j => Tuple.Create(j.Item1, SpecialMod(DiagSum(j.Item1.Skip(index - 9)) + j.Item2, 10)));
             *  t = temp.Where(z => bry[index](z.Item2)).Select(k => Tuple.Create(k.Item1, k.Item2 / 10)).ToList();
             *  index++;
             * }*/

            var multi = t.Select(q => Tuple.Create(BigNumberHelper.MultiplyListRepresentingNumber(q.Item1.ToList(), q.Item1.ToList()), q.Item1)).ToList();

            //multi.Where(d=> d.All(
            multi = multi.Where(df => df.Item1.Count == 19 || (df.Item1.Count == 20 && df.Item1[19] == 0)).Select(sw => Tuple.Create(sw.Item1.Take(19).ToList(), sw.Item2)).ToList();
            int counter    = 0;
            int maxCounter = 0;

            foreach (var numero in multi)
            {
                counter = 0;
                foreach (var numeroElement in numero.Item1)
                {
                    if (counter > maxCounter)
                    {
                        maxCounter = counter;
                    }
                    if (!bry[counter](numeroElement))
                    {
                        break;
                    }
                    counter++;
                }
                if (counter == 19)
                {
                }
            }



            Console.WriteLine(t.Count);
        }
Пример #5
0
        public int Problem16()
        {
            List <int> listRepresentingNumber = new List <int>();

            listRepresentingNumber.Add(1);

            for (int index = 1; index <= 1000; index++)
            {
                BigNumberHelper.MultiplyListRepresentingNumberVoid(listRepresentingNumber, 2);
            }

            int answer = listRepresentingNumber.Sum();

            return(answer);
        }
Пример #6
0
        public int Problem25()
        {
            List <int> result   = new List <int>();
            List <int> prevprev = BigNumberHelper.GetAsListRepresentingNumber(1);
            List <int> prev     = BigNumberHelper.GetAsListRepresentingNumber(1);
            int        n        = 2;

            while (result.Count() < 1000)
            {
                result   = BigNumberHelper.AddListRepresentingNumbers(prevprev, prev);
                prevprev = prev;
                prev     = result;
                n++;
            }
            return(n);
        }
Пример #7
0
        public int Problem20()
        {
            int        i   = 100;
            List <int> num = BigNumberHelper.GetAsListRepresentingNumber(i);


            while (i > 1)
            {
                List <int> num2 = BigNumberHelper.GetAsListRepresentingNumber(i - 1);
                num = BigNumberHelper.MultiplyListRepresentingNumber(num, num2);
                i--;
            }

            int answer = num.Sum();

            return(answer);
        }
Пример #8
0
        public void Problem43()
        {
            var list = this.GetPerms(0, 10).Select(x => new { Orig = x, Split = this.Split(x, 3) });
            var hmm  = list.
                       Select(x => new
            {
                x.Orig,
                Split = x.Split.Item2.
                        Aggregate(x.Split.Item1.ToEnumerable(), (y, i) => y.Concat(y.Last().Skip(1).Concat(i))).Skip(1)
            }
                              );
            var ooo         = hmm.Select(x => new { x.Orig, Nums = x.Split.Select(MathsHelper.ConvertToDecimal) });
            var primes      = MathsHelper.GetPrimesUpTo(17).ToList();
            var interesting = ooo.Where(x => x.Nums.Zip(primes, (a, b) => a % b).All(y => y == 0)).ToList();
            var thingy      = interesting.Select(x => x.Orig.Reverse().ToList()).ToList();


            var hello = BigNumberHelper.AddListRepresentingNumbers(thingy);
        }