Example #1
0
        private static object crs(List <IdOffs> busses)
        {
            var N = busses.Select(f => (long)f.ID).Aggregate((a, b) => a * b);

            N.Debug("N");
            foreach (var bus in busses)
            {
                bus.N = N / (long)bus.ID;
            }
            foreach (var bus in busses)
            {
                (_, var z1, var z2) = AocMath.Euklid(bus.N, bus.ID);
                bus.A = z1;
            }
            var sum = busses.Select(b => b.Offset * b.N * b.A).Sum();

            sum = Math.Abs(sum);
            (sum % N).Debug("most likly the solution, if not try the result below xD");
            return(N - (sum % N));
        }
Example #2
0
        static void Main(string[] args)
        {
            var earliestts = 1000052;

            //earliestts = 939;
            earliestts.Debug("ts");
            var foos = LoadFoos("input.txt");
            //foos = LoadFoos("sample.txt");
            Foo foo = foos.Select(id => new Foo()
            {
                Deperature = ((earliestts / id) + 1) * id, Id = id
            })
                      .Select(x =>
            {
                x.Minutes = x.Deperature - earliestts;
                return(x);
            })
                      .OrderBy(s => s.Minutes).First();

            foo.Debug();
            var x = foo.Id * foo.Minutes;

            // x.AsResult1();

            AocMath.GgT(156, 66).Debug("ggt");

            crs(LoadFoos2("sample.txt")).Assert(1068781L);
            crs(LoadFoos2("sample2.txt")).Assert(3417L);
            crs(LoadFoos2("sample3.txt")).Assert(754018L);
            crs(LoadFoos2("sample4.txt")).Assert(779210L);
            crs(LoadFoos2("sample5.txt")).Assert(1261476L);


            crs(LoadFoos2("sample6.txt")).Assert(1202161486L);

            crs(LoadFoos2("input.txt")).Debug("crs (input)").AsResult2();


            return;

            /*
             *
             *
             *
             * var f2Sorted = foos2.Skip(1).OrderByDescending(f => f.ID).ToList().Debug("sorted");
             *
             * foos2.Select(f => $"(x + {f.Offset}) % {f.ID}").ToCommaString(" + ").Debug("0 = ");
             *
             * var max = foos2.Max(f => f.ID).Debug("max");
             * var maxFoo = foos2.First(f => f.ID == max);
             *
             * var first = foos2.First().ID;
             * GenerateDeparturesFor(first, maxFoo)
             *  .AsParallel()
             *  .Where(d => f2Sorted.Skip(1).All(f => (d + f.Offset) % f.ID == 0))
             *  .First()
             *  .AsResult2();
             *
             * //var field = new Field<Foo>(f => f.Pos);
             * //field.Add(foos.Where(f => f.A != "."));
             *
             *
             * //field.ToConsole(f => f.A);
             */

            Report.End();
        }