Пример #1
0
        public override void Calc()
        {
            input = input.Replace(" => ", "=").Replace(", ", ",");
            //Console.WriteLine(input);
            var lines = input.Split('\n');


            foreach (var a in lines)
            {
                recepie r = new recepie();
                //2 NMWJT, 7 NXVR, 6 LNVPT => 9 TWVWC
                var b = a.Replace("\r", "").Split('=');

                var c = b[0].Split(',');
                foreach (var d in c)
                {
                    var e = d.Split(' ');
                    r.quantities.Add(int.Parse(e[0]));
                    r.components.Add(e[1]);
                }

                c = b[1].Split(',');
                foreach (var d in c)
                {
                    var e = d.Split(' ');
                    r.quantity = int.Parse(e[0]);
                    r.result   = e[1];
                }

                rec.Add(r.result, r);
            }
            recepie rr = new recepie();

            rr.result    = "ORE";
            rr.available = int.MaxValue;
            rec.Add(rr.result, rr);


            foreach (var r in rec)
            {
                foreach (var r2 in r.Value.components)
                {
                    r.Value.componentsLink.Add(rec[r2]);
                }
            }

            rec["FUEL"].craft();



            output = (int.MaxValue - rec["ORE"].available) + "";
        }
Пример #2
0
        public override void Calc()
        {
            input = input.Replace(" => ", "=").Replace(", ", ",");
            //Console.WriteLine(input);
            var lines = input.Split('\n');

            int mul = 100;

            foreach (var a in lines)
            {
                recepie r = new recepie();
                //2 NMWJT, 7 NXVR, 6 LNVPT => 9 TWVWC
                var b = a.Replace("\r", "").Split('=');

                var c = b[0].Split(',');
                foreach (var d in c)
                {
                    var e = d.Split(' ');
                    r.quantities.Add(int.Parse(e[0]) * mul);
                    r.components.Add(e[1]);
                }

                c = b[1].Split(',');
                foreach (var d in c)
                {
                    var e = d.Split(' ');
                    r.quantity = int.Parse(e[0]) * mul;
                    r.result   = e[1];
                }

                rec.Add(r.result, r);
            }



            recepie rr = new recepie();

            rr.result    = "ORE";
            rr.available = tril;
            rec.Add(rr.result, rr);

            /*
             *          foreach (var r in  rec)
             *          {
             *              Console.WriteLine(r);
             *          }
             *          Console.ReadLine();
             */
            foreach (var r in rec)
            {
                foreach (var r2 in r.Value.components)
                {
                    r.Value.componentsLink.Add(rec[r2]);
                }
            }


            Console.WriteLine(rec["FUEL"].GetCost());

            int t = 0;

            //while (rec["ORE"].available > 0)
            {
                /* foreach (var r in rec)
                 * {
                 *   Console.WriteLine(r);
                 * }
                 * Console.ReadLine();
                 */
                //  rec["FUEL"].craft();
                t++;

                if (t % 100 == 0)
                {
                    // Console.WriteLine((int)(tril / ((double)(tril - rec["ORE"].available) / (double)rec["FUEL"].available)));
                }

                //  bool found = false;

                /*   foreach (var r in rec)
                 * {
                 *     if (r.Value.available>0 && r.Key != "ORE" && r.Key != "FUEL")
                 *     {
                 *         found = true;
                 *         break;
                 *     }
                 * }
                 *
                 * if (!found)
                 * {
                 *     foreach (var r in rec)
                 *     {
                 *         Console.WriteLine(r);
                 *     }
                 * }
                 */
            }



            output = (rec["FUEL"].available) + "";
        }