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) + ""; }
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) + ""; }