コード例 #1
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);
        }
コード例 #2
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);
        }
コード例 #3
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);
        }