static void Main(string[] args) { Directory.SetCurrentDirectory(@"D:\projects\adventofcode\2020"); var contents = System.IO.File.ReadAllLines("input/day07.data"); foreach (var line in contents) { var s = line.Split(new string[] { " bags contain " }, StringSplitOptions.RemoveEmptyEntries); var b = new bag(s[0]); foreach (var d in s[1].Split(new string[] { " bags, ", " bags.", " bag, ", " bag." }, StringSplitOptions.RemoveEmptyEntries)) { if (d != "no other") { b.contains( int.Parse(d.Substring(0, d.IndexOf(' '))), d.Substring(d.IndexOf(' ') + 1) ); } } data.Add(b.name, b); } foreach (var bag in data.Values) { if (bag.name != myBag) { bag.gold = process(bag); } } Console.WriteLine("Answer: " + data.Values.Where(d => d.gold).Count()); int count = 0; foreach (var bag in data[myBag].bags) { count += Count(bag); } Console.WriteLine("Answer: " + count); }
private void day7_Load(object sender, EventArgs e) { for (int i = 0; i < input.Count; i++) { bag temp = new bag(i); temp.bagColor = input[i].Substring(0, input[i].IndexOf(" bags")); temp.bagCount = 1; temp.index = i; string contentString = input[i].Substring(input[i].LastIndexOf("contain ") + 8); if (!contentString.Contains("no other")) { string[] line = contentString.Split(delims); temp.contents = new List <bag>(); for (int j = 0; j < line.Length; j++) { line[j] = line[j].Trim(); bag contentTemp = new bag(line[j][0], j); contentTemp.bagColor = line[j].Substring(2, line[j].Length - 7); temp.contents.Add(contentTemp); } } bags.Add(temp); } int gbOptions = -1; for (int i = 0; i < bags.Count; i++) { /*printRecursive("", i);*/ if (countRecursive(i)) { Console.Out.WriteLine(i + " is true"); gbOptions++; } else { Console.Out.WriteLine(i + " is false"); } } Console.Out.WriteLine("Number of possible shinys: " + gbOptions); }
static Boolean process(bag p) { if (p.name == myBag) { return(true); } if (seen.Contains(p.name)) { return(p.gold); } seen.Add(p.name); foreach (var b in p.bags) { if (process(data[b.name])) { p.gold = true; } } return(p.gold); }